Аргументы вызова

Формально оператор <> не просматривает аргументы вызова – он работает с массивом @ARGV. Это специальный массив, который интерпретатор Perl заполняет аргументами вызова. Иначе говоря, он во всем похож на обычные массивы (если не считать прописных букв в имени), но при запуске программы @ARGV уже содержит список всех аргументов вызова. С @ARGV можно выполнять те же операции, что и с любым другим массивом; например, вы можете извлекать из него элементы вызовом shift или перебирать их в цикле foreach. Вы даже можете проверить, не начинаются ли какие-либо аргументы с дефиса, чтобы обработать их как ключи вызова (как, например, поступает сам Perl с ключом вызова –w).

Оператор <> обращается к @ARGV, чтобы определить, какие имена файлов он должен использовать. Обнаружив там пустой список, он использует стандартный поток ввода; в противном случае используется список найденных файлов. Это означает, что после запуска программы, но перед первым использованием @ARGV можно изменить содержимое @ARGV. Например, следующая программа всегда обрабатывает три конкретных файла независимо от того, что пользователь ввел в командной строке:

@ARGV = qw# larry moe curly #; # Принудительное чтение трех файлов
while (<>) {
chomp;
print "It was $_ that I saw in some stooge-like file!\n";
}

Оцените статью: (0 голосов)
0 5 0

Статьи из раздела Perl на эту тему:
Ввод данных оператором <>
Вывод функцией say
Закрытие файлового дескриптора
Запись данных в стандартный вывод
Изменение файлового дескриптора вывода по умолчанию

Вернуться в раздел: Perl / 4. Ввод и вывод