En Perl, a menudo se puede evitar el uso de bloques de control, así:expresión foreach conciso en una línea
print "$_\n" foreach(@files);
en lugar de:
foreach(@files){
print "$_\n";
}
¿Cómo funciona esto sintaxis en la siguiente, más caso complejo:
die("Not a file: $_") unless -f $_ foreach(@files);
Me da un error de sintaxis. No estoy tratando de escribir código ofuscado, es solo una parte sin importancia en el programa, por lo que quiero expresarlo de la manera más concisa posible.
RESPUESTAS resumirse así:
que sólo puede aceptar una respuesta como la respuesta aceptada, pero me gusta los siguientes los de Chris y Jon mejor.
Ésta utiliza foreach
como era mi intención, pero sin la syntax error
:
-f or die "Not a file: $_" foreach @files;
y el siguiente es al menos tan buena. Me gusta que die
se encuentra al principio de la declaración, porque eso es lo que la atención del lector debe dirigirse a:
die("Not a file: $_") for grep {!-f} @files;
Estoy de acuerdo en que 'die()' es mejor al principio de la línea, pero en un apuro, la lógica de cortocircuito es igual de fácil de leer para mí. –
¿Estás jugando al golf? De lo contrario, ¿por qué es importante tenerlo en una línea? –