Ответ, ИМХО, заключается в том, что в Perl нет оператора if !
: есть оператор if
и есть оператор !
. Оператор !
не привязан к if
; он оперирует своим аргументом. Если вы начнете думать такими категориями, ваша жизнь станет проще.
Итак, в вашем случае у вас есть
do_something() unless something;
и
do_something() if something-else;
Давайте заключим в обычно невидимые скобки:
do_something() unless ( something );
и
do_something() if ( something-else );
В этом случае вы пытались написать something-else
так, чтобы истинное значение этого условия было эквивалентно истинному something
, но не приняли во внимание тот факт, что оператор !
тесно связывает.
Вот почему есть not
.
Пытаться
perl -ne 'print if not /^$/../^$/' file
См. not
в perldoc perlop:
Унарный not
возвращает логическое отрицание выражения справа от него. Это эквивалент !
, за исключением очень низкого приоритета.
person
Sinan Ünür
schedule
07.03.2010