No creo que el siguiente debería funcionar, pero lo hace:¿El operador de diamante Perl itera sobre matrices que no son mágicas (no @ARGV)?
$ perl -e '@a = qw/1222 2 3/; while (<@a>) { print $_ ."\n";}'
1222
2
3
$
Por lo que yo sé, el operador de Perl <>
shoud trabajar en gestor de archivo, globos y así sucesivamente, con la excepción del literal <>
(en lugar de <FILEHANDLE>
), que mágicamente itera sobre @ARGV
.
¿Alguien sabe si se supone que funciona también como lo hizo en mi prueba?
De perlop (1) alrededor de <> y @ARGV: allí es como funciona: se evalúa la primera vez <>, se comprueba la matriz @ARGV, y si está vacío, [0] se establece en $ ARGV a "-", que cuando se abre le da una entrada estándar. La matriz @ARGV se procesa como una lista de nombres de archivos. Veo que algo similar sucede con mi @a, aunque no parece que eso deba suceder con cada matriz (y sé que el foreach o el mapa son mejores formas de procesar las matrices). Todavía me gustaría saber por qué sin meterme en el código –