В Perl часто можно избежать использования блоков управления, например:
print "$_\n" foreach(@files);
вместо:
foreach(@files){
print "$_\n";
}
Как работает этот синтаксис в следующем, более сложном случае:
die("Not a file: $_") unless -f $_ foreach(@files);
Это дает мне синтаксическую ошибку. Я не пытаюсь писать запутанный код, это просто не важная часть в программе, и поэтому я хочу выразить это как можно более кратко.
ОБОБЩЕННЫЕ ОТВЕТЫ:
Я могу принять только один ответ в качестве принятого, но мне больше всего нравятся следующие ответы Криса и Джона.
Этот использует foreach
, как я и предполагал, но без syntax error
:
-f or die "Not a file: $_" foreach @files;
А следующий, по крайней мере, так же хорош. Мне нравится, что die
находится в начале утверждения, потому что именно на это должно быть обращено внимание читателя:
die("Not a file: $_") for grep {!-f} @files;