【问题标题】:Perl compile time error, uninitialized valuePerl 编译时错误,未初始化的值
【发布时间】:2014-05-18 19:19:47
【问题描述】:

我一直遇到 perl 问题。这是我的程序:

my $data = decode_json $json;
my @infoids = keys %{$data -> {listinginfo}};

foreach my $infoid (@infoids) {
my $price = $data -> {listinginfo}{$infoid}{converted_price};
print "$price" . "\n"; #30
}

我正在使用严格和警告,我收到错误:在 C:\Users\Seb\perl.pl 第 30 行的字符串中使用未初始化的值 $price。任何关于为什么会发生这种情况的帮助将不胜感激.提前致谢。

Seb

编辑: 我使用此代码登录网站,我认为它可能有问题。它没有返回任何错误,但没有成功登录。

my $login = "https://steamcommunity.com/login/home/?goto=market%2F";
my $username = "USR";
my $password = "PASS";
my $mech = WWW::Mechanize->new();
$mech->cookie_jar(HTTP::Cookies->new());
$mech->get($login);
$mech->form_name('loginForm');
$mech->field(login => $username);
$mech->field(passwd => $password);
$mech->click();

【问题讨论】:

    标签: perl compiler-errors initialization


    【解决方案1】:

    我认为这个表达式$data -> {listinginfo}{$infoid}{converted_price}; 没有初始化。尝试 my $price = defined $data -> {listinginfo}{$infoid}{converted_price} ?$data -> {listinginfo}{$infoid}{converted_price} : 0 ; 这是 if .. then .. else 的简写形式。

    【讨论】:

    • 感谢您的回复,当我这样做时,我得到了很多 0。你知道这是为什么吗?
    猜你喜欢
    • 2014-02-05
    • 2011-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多