Как отправить значение, начинающееся с тире, в 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.