Как получить аргументы из командной строки с помощью Getopt :: Long? - PullRequest
0 голосов
/ 21 июня 2020

Требуется:

perl prg.pl --product --param Product1 --from FilePath

, где --product указывает ссылку на функцию, которая должна принимать параметр Product1, а FilePath - это путь к файлу, который нужно найти.

GetOptions('product=s'=>\&getproduct, 'param=s'=>\$param,'from=s'=>\$from);

Несмотря на это, при запуске программы Perl выдается ошибка, что значения product и from не инициализированы. Можете ли вы помочь мне решить эту проблему?

1 Ответ

2 голосов
/ 21 июня 2020

Вы указываете, что для опции product требуется значение (=s), поэтому

             Value for --product. (Not an option.)
             |
             |       Doesn't start with `-`, so option parsing ends.
             |       |
          vvvvvvv vvvvvvvv
--product --param Product1 --from FilePath
                  ^^^^^^^^^^^^^^^^^^^^^^^^
                             |
                             Not options, so found in @ARGV.

Fix:

GetOptions(
   'help|h|?' => \&help,
   'product'  => \$product,
   'param=s'  => \$param,
   'from=s'   => \$from,
)
   or usage();

@ARGV == 0
   or usage("Too many arguments.");

См. this для пример реализации usage и help.

...