如何将以破折号开头的值发送到Getopt :: Long?

时间:2013-06-13 22:21:21

标签: perl getopt-long commandargument

我有一个客户端脚本,我正在与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 个答案:

答案 0 :(得分:2)

specified s% - 定义一个指定哈希条目的选项。这意味着该选项的每个参数都有一个key=value形式。但是你只指定了-E。错误消息是关于缺失的=value部分,而不是前导-

或许使用s@来摄取一组简单的选项?或者如果您需要在将密钥和值传递给ftp之前将它们分开,请使用"-E="给出一个空值。