У меня есть сценарий perl, который принимает длинный вариант, например --pager='less -R'
, и я хочу сократить его до -p. Это быстрый взлом, я не знаю perl, и я предполагаю, что наиболее прямым способом является поиск и замена -p в массиве ARGV (или что-то, что он вызывается в perl) с помощью -pager = 'less -R' до он начинает обрабатывать аргументы командной строки.заменить элемент в @ARGV в perl
ответ
Вы можете использовать
s/^-p$/--pager/ for @ARGV;
как быстрый хак. Просто не вводите -p
в качестве значения для любой опции. Кроме того, всегда используйте пробел после -p
.
Если параметр указан как --pager="less -R"
, то я подозреваю, что сценарий использует Getopt::Long
. Соответственно измените соответствующую переменную.
Это не вопрос смены пейджера на p, это вопрос замены словаря '-p' для '--pager = "less -R"' – chriskirk
Похоже, что вам определенно необходимо Getopt::Long, часть основного распределения Perl.
Хотя это не быстрый хак, это на мой взгляд правильный способ обработки аргументов. Прочитайте документацию, вы увидите, как быстро вы можете справиться с такими вещами.
Насколько я понимаю, кто-то еще мог найти интересный модуль. –
Некоторые мысли о том, почему вы всегда должны использовать Getopt :: Long. http://www.perlmonks.org/?node_id=687283. Если у вас есть время, вы должны прочитать оригинальное сообщение tchrist от p5p. –
и фактически Getopt :: Long был ядром, так как был выпущен Perl 5. Нет необходимости устанавливать CPAN. –
Зачем изобретать колесо, особенно если вас не интересует «правильное» программирование на Perl?
Было бы больно добавлять couple of extra lines?
use strict;
use warnings;
use Getopt::Long;
my $pager = 'default value';
GetOptions('pager=s' => \$pager) or die "Could not load options\n";
- 1. ARGV в Perl не работает
- 2. Perl + @ARGV + печать синтаксиса
- 3. Переменная аргумента командной строки @ARGV в Perl
- 4. подпрограмма в perl для выполнения записей #ARGV
- 5. @ARGV в Perl (аргументы командной строки)
- 6. Perl Oneliner где хлебает @ARGV
- 7. Perl, CMD, $ ARGV [0], медленно
- 8. Perl Parse $ 1 от ARGV
- 9. Система() Perl «приостановлена». Вызывается $ ARGV []?
- 10. Заменить â € ™ в Perl
- 11. perl regex заменить элемент одиночной матрицы
- 12. Как получить элемент из ARGV []
- 13. Perl поддержка юникода из консоли (@ARGV)/Windows/
- 14. получить справочники с использованием ARGV для perl
- 15. Как собрать ARGV с помощью Perl CGI?
- 16. Как заменить «\» на «//» в Perl?
- 17. Заменить два поля в Perl
- 18. Заменить элемент в массиве
- 19. Заменить элемент в массиве
- 20. Заменить элемент в querystring
- 21. Можно ли заменить glutInit (& argc, argv)?
- 22. Как напечатать пустой XML-элемент в perl
- 23. Perl линейный режим Oneliner с ARGV
- 24. Perl переполняет все аргументы командной строки в $ ARGV [0]
- 25. Как передать аргумент ARGV из текстового файла в Perl
- 26. Синтаксический строка в ARGV эквивалент (Windows и Perl)
- 27. ARGV пуст в perl-скрипте, когда пакет использует getopt
- 28. Perl one-liner: как перейти к следующему файлу в @ARGV
- 29. Использование ARGV при переходе через каталоги в Perl
- 30. Почему «$ _» совпадает с $ ARGV в одном слое Perl?
Почему бы не выполнить поиск кода для «пейджер» и попробовать, что произойдет, если вы измените его на «p»? (Пожалуйста, сохраните копию оригинального сценария). –