标签: perl5.16

关于"不能将未定义的值用作ARRAY引用"的不一致行为

为什么以下代码:

use strict;
use warnings;
no warnings 'uninitialized';

use Data::Dumper;

my $user;
my @data = @{$user->{ENTERPRISE}}; # Error on this line
print Dumper($user), qq{Done!\n};
Run Code Online (Sandbox Code Playgroud)

抛出错误" Can't use an undefined value as an ARRAY reference",而以下代码:

use strict;
use warnings;
no warnings 'uninitialized';

use Data::Dumper;

my $user;
foreach my $enterprise(@{$user->{ENTERPRISES}}) {
    print qq{Enterprise:}, $enterprise;
}
print Dumper($user), qq{Done!\n};
Run Code Online (Sandbox Code Playgroud)

不抛出任何东西,而是返回:

$VAR1 = {
          'ENTERPRISES' => []
        };
Done!
Run Code Online (Sandbox Code Playgroud)

两者都有违规代码,但只有一个抛出错误.

可能的答案: Perl的自动化?

我在这里走在正确的轨道上吗?感谢您的输入.

perl perl5.16

7
推荐指数
1
解决办法
262
查看次数

Perl REST客户端,身份验证问题

我使用Perl 5.16与REST::ClientGET进行REST调用,但它显示错误401身份验证问题.我不清楚如何解决这个问题.

use REST::Client;
use JSON;
use Data::Dumper;
use MIME::Base64;

my $username = 'test';
my $password = 'test';

my $client = REST::Client->new();
$client->setHost('http://myurl');

my $headers = {
    Accept        => 'application/json',
    Authorization => 'Full' . encode_base64($username . ':' . $password)
};
$client->GET('folder/file', $headers);

print $client->responseCode();
print $client->responseContent();
Run Code Online (Sandbox Code Playgroud)

rest perl perl-module perl5.16

3
推荐指数
1
解决办法
5536
查看次数

Perl 哈希值

我试图打印 perl 哈希值,但它打印的是 ARRAY()。

foreach my $key (sort keys %myHash) {
    my $val = $myHash{$key};
    print "$key => $val\n";
}
Run Code Online (Sandbox Code Playgroud)

输出正在打印

172  ARRAY(0x1c42548)
199  ARRAY(0x1c42638)
209  ARRAY(0x1c63360)
299  ARRAY(0x1c63390)
325  ARRAY(0x1c634e0)
Run Code Online (Sandbox Code Playgroud)

perl perl5.16

3
推荐指数
1
解决办法
93
查看次数

标签 统计

perl ×3

perl5.16 ×3

perl-module ×1

rest ×1