2013-06-13 4 views
2

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

Это то, что он выглядит как

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 

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

ответ

2

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

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

+0

Я не хотел, чтобы '%' на всех простых '= s'. Черт, так много для копирования и вставки кода, который я использовал тысячу раз, не глядя на него. –

+0

@EvanCarroll Я сохраняю сценарий скелета, который имеет весь шаблонный код, включая GetOpt :: Long, поэтому мне не нужно помнить. – kjprice