为什么以下代码:
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 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) 我试图打印 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)