спасибо 2-й вариант мне понравился больше,
я все думаю, а ведь уже куча модулей на это тему есть,
а каждай все-таки реализует по-своему,
исправлю - покажу

11:36, 15 октября 2015 г., Victor Efimov <[email protected]>:
а со второй что не нравится?
можно ещё так записать:

join ("/", map { $_ ? $_ : () } ($_->day, $_->month, $_->year)) for
($date_of_birth)

или даже так

join ("/", map { $_ || () } ($_->day, $_->month, $_->year)) for ($date_of_birth)

perl -e 'my $date_of_birth = { day => 1, month => 2, year => 3 };
print join ("/", map { $_ ? $_ : () } ($_->{day}, $_->{month},
$_->{year})) for ($date_of_birth)'
1/2/3

хотя я тут вник в логику - она какая-то странная.. если day есть, а
month нет - странные результаты

15 октября 2015 г., 11:16 пользователь Nikolay Mishin <[email protected]> написал:

 Виктор, спасибо,
 певая часть действительно булет смотреться лучше

 10:53, 15 октября 2015 г., Victor Efimov <[email protected]>:

 примерно так:

  push @person_row, (defined $person->get_father()) ?
 $person->get_father()->get_id() : undef;

 на

 push @person_row, map { defined ? $_->get_id : undef }
 ($person->get_father(), $person->get_mother()))

 и

       $date .= defined $date_of_birth->day ? $date_of_birth->day."/" : "";
       $date .= defined $date_of_birth->month ? $date_of_birth->month."/" :
 "";
       $date .= defined $date_of_birth->year ? $date_of_birth->year : "";

 на

 for ($date_of_birth) {
    join ("/", map { $_ ? $_ : () } ($_->day, $_->month, $_->year_))
 }


 (не тестировал)


 15 октября 2015 г., 5:43 пользователь Nikolay Mishin <[email protected]> написал:

  Hi Moscow.PM!

  Существует ли какой-либо сбособ сделать более читаемым такой код?:

      push @person_row, (defined $person->get_father()) ?
 $person->get_father()->get_id() : undef;
      push @person_row, (defined $person->get_mother()) ?
 $person->get_mother()->get_id() : undef;
      push @person_row, ($person->get_email(), $person->get_homepage());

      my $date = "";
      if(defined $person->get_date_of_birth()) {
        my $date_of_birth = $person->get_date_of_birth();
        $date .= defined $date_of_birth->day ? $date_of_birth->day."/" : "";
        $date .= defined $date_of_birth->month ? $date_of_birth->month."/" :
 "";
        $date .= defined $date_of_birth->year ? $date_of_birth->year : "";
      }

  источник
 https://github.com/mishin/Ftree-cpan/blob/master/lib/Ftree/Exporters/ExcelExporter.pm#L53

  --
  С уважением
  Николай Мишин

  --
  Moscow.pm mailing list
  [email protected] | http://moscow.pm.org

 --
 Moscow.pm mailing list
 [email protected] | http://moscow.pm.org



 Sincerely, Nikolay Mishin
 --
 Moscow.pm mailing list
 [email protected] | http://moscow.pm.org

--
Moscow.pm mailing list
[email protected] | http://moscow.pm.org


Sincerely, Nikolay Mishin
-- 
Moscow.pm mailing list
[email protected] | http://moscow.pm.org

Ответить