Цитата из Perl::Critic::Policy::InputOutput::ProhibitExplicitStdin
Perl имеет полезный волшебный дескриптор файла, называемый * ARGV, который проверяет командную строку и, если есть какие-либо аргументы, открывает и читает их как файлы. Если аргументов нет, * ARGV ведет себя как * STDIN. Это почти всегда то, что вам нужно, если вы хотите создать программу, которая читает из STDIN. Это часто записывается в одной из следующих двух эквивалентных форм:
while (<ARGV>) { # ... do something with each input line ... } # or, equivalently: while (<>) { # ... do something with each input line ... }
- Это «просто соглашение» или есть веские причины не использовать
<STDIN>
?
Я чувствую, что <STDIN>
делает намерения моего кода более ясными, чем использование <>
или <ARGV>
.
Поток моего кода выглядит так
my @inp = <STDIN>;
my $len = $inp[0];
...
for(my $i = 0; $i < ($len + 0); $i++) {
my @temp = split (' ', $inp[$i]);
...
}