如何制作Perl';s Getopt::Long是否不处理参数名称中的文本=?

如何制作Perl';s Getopt::Long是否不处理参数名称中的文本=?,perl,getopt-long,Perl,Getopt Long,我编写了一个Perl程序“transfer.pl”,输入参数是散列值(键和值是字符串)。代码段为: my %transfers = (); if (!GetOptions("transfer=s" => \%transfers)) { Usage(); exit(1); } 我用的是windows系统。在命令行中,我键入: perl transfer.pl--传输“table=%s”=“[TableName=%s]” 我希望键是table=%s,值是[TableName

我编写了一个Perl程序“transfer.pl”,输入参数是散列值(键和值是字符串)。代码段为:

my %transfers = ();

if (!GetOptions("transfer=s" => \%transfers))
{
    Usage();
    exit(1);
}
我用的是windows系统。在命令行中,我键入:

perl transfer.pl--传输“table=%s”=“[TableName=%s]”

我希望键是
table=%s
,值是
[TableName=%s]
,但似乎Getopt::Long总是找到第一个
=
,因此键是
table
,值是
%s=[TableName=%s]

我打字的时候

perl transfer.pl--传输“table\=%s”=“[TableName\=%s]”

键是
table\
,值是
%s=[TableName\=%s]

我想知道如何绕过字符串值中的“=”并使代码实现我所期望的功能

多谢各位

来自

如果选项目标是对散列的引用,则该选项将采用key=value形式的字符串作为值。该值将与指定的键一起存储在哈希中。 或者,您可以使用: 与命令行选项一起使用时: 它将始终在第一个“
=
”上拆分。

将不允许此操作;第一个
=
始终用于将键与值分开。您需要使用来处理选项,或者在
GetOptions
完成后拆分
key=value
对,或者使用一些任意转义机制,例如使用“
%25
”来表示键中的
=

GetOptions ("define=s" => \%defines);
GetOptions ("define=s%" => \$defines);
--define os=linux --define vendor=redhat