Как я могу управлять аргументами / переменными командной строки для скрипта, написанного на Perl? - PullRequest
3 голосов
/ 28 мая 2010

Я пытаюсь управлять многочисленными аргументами, указанными пользователем при выполнении команды. До сих пор я пытался ограничить дизайн своего скрипта управлением аргументами как флагами, которыми я легко могу управлять с помощью Getopt :: Long следующим образом:

GetOptions ("a" => \$a, "b" => \$b);

Таким образом, я могу проверить, были ли указаны a или b, а затем выполнить соответствующий код / ​​функции.

Однако теперь у меня есть случай, когда пользователь может указать две переменные аргумента следующим образом:

command -a black -b white

Это нормально, но я не могу найти хороший способ определить, указан ли -a или -b первым. Поэтому я не знаю, присвоена ли переменная-аргумент $ARGV[0] или $ARGV[1] после того, как я выполнил GetOptions ("a" => \$a, "b" => \$b);.

Как определить, какая переменная связана с -a, а какая с -b в приведенном выше примере?

Ответы [ 2 ]

6 голосов
/ 28 мая 2010

Getopt поддерживает аргументы опций, поэтому вы можете сказать, например:

GetOptions( 'a=s' => \$a, 'b=s' => \$);
print "a is $a and b is $b";

с командной строкой в ​​вашем вопросе печатает:

a is black and b is white

См. Страницу руководства , чтобы найти больше опций. Это очень мощный модуль.

2 голосов
/ 28 мая 2010
my $a = ''; # option variable with default value (false)
my $b = ''; # option variable with default value (false)

GetOptions ('a' => \$a, 'b' => \$b);

print "a is $a and b is $b\n

Пожалуйста, просмотрите документацию по perl Getopt :: Long Из этого документа.

Вызов GetOptions () анализирует аргументы командной строки, которые присутствует в @ARGV и устанавливает опцию переменная к значению 1, если опция произошло в командной строке. В противном случае переменная параметра не прикосновение. Установка значения параметра в Истину часто называют включением опция.

Имя параметра, указанное в Функция GetOptions () называется спецификация варианта. Позже увидим что эта спецификация может содержать больше, чем просто название опции. ссылка на переменную называется пункт назначения.

GetOptions () вернет истинное значение если бы командная строка могла быть обработана успешно. Иначе он напишет сообщения об ошибках в STDERR и вернуть ложный результат.

Также этот также может помочь вам.

...