Чтобы расширить мой эмулятор "grep" в Perl, я добавил поддержку переключателя -r
, который обеспечивает рекурсивный поиск в подкаталогах. Теперь вызов командной строки выглядит примерно так:
perl pgrep.pl -r <directory> <expression>
Оба аргумента -r
и directory
являются необязательными (по умолчанию для каталога задано '.'). На данный момент я просто проверяю, является ли первый аргумент -r
, и если да, устанавливаю соответствующий флаг, и сканирую остальные два аргумента, используя операцию сдвига. Это, очевидно, было бы проблемой, если бы -r
появилось в конце списка аргументов или еще хуже - между именем каталога и поисковым выражением.
Один из обходных путей - просто удалить элемент -r
из массива @ARGV, чтобы я мог просто shift - в оставшихся аргументах, но я не могу придумать, как это сделать. без получения «undef» в нечетной позиции в моем массиве. Любые предложения или другие стратегии, которые вы могли бы использовать, приветствуются.