Я не думаю, что должно работать, но это делает:Выполняет ли оператор алмаза Perl по немагическим массивам (не @ARGV)?
$ perl -e '@a = qw/1222 2 3/; while (<@a>) { print $_ ."\n";}'
1222
2
3
$
Насколько я знаю, <>
оператора в Perl Шоуда работать на FILEHANDLE, комки и так далее, за исключением буквального <>
(вместо <FILEHANDLE>
), который волшебным образом повторяется над @ARGV
.
Кто-нибудь знает, если он должен работать, как и в моем тесте?
От perlop (1) about <> и @ARGV: Вот как это работает: в первый раз <> оценивается массив @ARGV, а если он пуст, устанавливается $ ARGV [0] до «-», который при открытии дает вам стандартный ввод. Затем массив @ARGV обрабатывается как список имен файлов. Я вижу, что что-то подобное происходит с моим @a, хотя это не похоже, что это должно произойти с каждым массивом (и я знаю, что foreach или карта лучше подходят для обработки массивов). Я все еще хотел бы знать, почему, не зарываясь в код –