我正在尝试编写一个快速脚本,我可以通过不同的开关来与基于我查询的URL返回文本的Web API进行交互.因此,我没有尝试复制/粘贴URL等等,而是可以运行script.pl --history,例如......无论如何,我的代码看起来像这样
#!/usr/bin/perl use strict; use warnings; use Getopt::Long qw(GetOptions); use WWW::Curl::Easy; my $APIKEY = "myapikey"; my $ip; my $hist; my $health; my $url; #... etc GetOptions( 'ip=s' => \$ip, 'history' => \$history 'health' => \$health ) or die "Useage: blah blah" if $history and not $ip; if ($health) { $url = "appropriateurlhere"; } #curl logic/handling/printing/etc
因此,如果我尝试做script.pl --health,并打印"$ health",它应该被设置为某种真正的价值,但事实并非如此.这是未定义的...我无法弄清楚为什么.
你的问题是if语句修饰符:
GetOptions( 'ip=s' => \$ip, 'history' => \$history 'health' => \$health ) or die "Useage: blah blah" if $history and not $ip; # <-- remove this if;
永远不会调用GetOptions,因为$history
当达到if时,它是undef.