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