Как отправить значение, начинающееся с тире, в Getopt::Long?

У меня есть скрипт на стороне клиента, который я делаю, который связывается с GNU-FTP. Я хочу, чтобы иметь возможность отправить пользовательский аргумент в командной строке, поэтому я создал аргумент --ftp-args

вот как это выглядит

GetOptions(
  .. redacted stuff..
  "ftp-args=s%" => \$FTP_ARGS
) or die("Error in command line arguments\n");

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

$ ./script/dm-ftp360 --ftp-args="-E"
Option ftp-args, key "-E", requires a value
Error in command line arguments

Можно ли обойти это и сделать это возможным?

1 ответ

Решение

Вы указалиs% - определение опции, которая определяет записи хеша. Это подразумевает форму key=value для каждого аргумента опции. Но вы только указали -E, Сообщение об ошибке отсутствует =value часть, а не ведущий -,

Возможно использовать s@ вместо того, чтобы проглотить набор простых вариантов? Или дать пустое значение, используя "-E=" если вам нужно разделить ключи и значения перед передачей их в ftp.

Другие вопросы по тегам