当前位置:  开发笔记 > 编程语言 > 正文

为什么Getopt :: Long没有初始化任何值?

如何解决《为什么Getopt::Long没有初始化任何值?》经验,为你挑选了1个好方法。

我正在尝试编写一个快速脚本,我可以通过不同的开关来与基于我查询的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",它应该被设置为某种真正的价值,但事实并非如此.这是未定义的...我无法弄清楚为什么.



1> Miller..:

你的问题是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.

推荐阅读
yzh148448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有