среда, 15 июля 2009 г.

При присвоении перл возвращает переменную (вернее - lvalue), а не ее значение

Что это дает?
Пример 1.
Можно сделать замену в скопированной переменной(сохранив при этом оригинальную)
(my $new_var = $original_var)  =~ s/pattern/replacement/;

Пример 2.
Запись вида :
$a += 2;
$a *= 3;
можно заменить на :
($a += 2) *= 3;
Пример 3.
Запись вида :

if ($x) {
    $a->{key} = 1;
}else{
    $b->{key} = 1;
}

Можно заменить на : ($x ? $a : $b)->{key} = 1

ЗЫ: с это особенностью нужно быть осторожным.
Например, код:  0 ? $a = 1 : $a = 2; print $a; # выведет 2(вроде правильно)
1 ? $a = 1 : $a = 2; print $a; # выведет тоже  2. Хотя это не самый лучший  пример, в данном случае можно (и нужно) было  бы записать $a = 1? 1: 2;

0 коммент.:

Отправить комментарий

Не забудьте добавить себя в постоянные читатели и включить уведомления о новых комментариях, либо воспользуйтесь RSS каналом ;)