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