如何制作Perl';s Getopt::Long是否不处理参数名称中的文本=?
我编写了一个Perl程序“transfer.pl”,输入参数是散列值(键和值是字符串)。代码段为:如何制作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
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