gpt4 book ai didi

perl - 如何让 Perl 的 Getopt::Long 不处理参数名称中的文字 =?

转载 作者:行者123 更新时间:2023-12-04 07:04:48 29 4
gpt4 key购买 nike

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

my %transfers = ();

if (!GetOptions("transfer=s" => \%transfers))
{
Usage();
exit(1);
}

我用的是windows系统。在命令行中,我输入:

perl tranfer.pl --transfer "table = %s"="[TableName=%s]"



希望关键是 table = %s并且值为 [TableName=%s] ,但似乎 Getopt::Long 总是找到第一个 =所以关键是 table并且值为 %s=[TableName=%s] .

当我打字时

perl tranfer.pl --transfer "table \= %s"="[TableName\=%s]"



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

我想知道如何绕过字符串值中的“=”并使代码按照我的预期运行?

非常感谢!

最佳答案

Getopt::Long 不允许这样做;第一 =始终用于将键与值分开。您将需要使用 user-defined subroutine处理选项,或拆分 key=value对后 GetOptions完成或使用一些任意的转义机制,例如使用“%25 ”来表示 =在一个关键。

关于perl - 如何让 Perl 的 Getopt::Long 不处理参数名称中的文字 =?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1275727/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com