Perl 散列引用作为子例程的参数 - 不能使用字符串作为散列引用
Perl hash reference as argument to subroutine - Can't use string as a HASH ref
我试图准备一个带有散列和子例程的小脚本。老实说,我是 perl 的新手。有人能告诉我下面的代码有什么问题吗?我得到 Can't use string ("1") as a HASH ref 错误。
#!/usr/bin/perl
use strict;
use warnings;
no warnings 'uninitialized';
use Data::Dumper;
my %match_jobs;
push @{ $match_jobs{'1'}} , {'job_id'=>'13', 'job_title'=>'Article_9', 'job_description'=>'899.00'};
hash_iterate(\%match_jobs);
sub hash_iterate{
my $job_match=@_;
print Dumper($job_match);
foreach my $match_job_row (keys %$job_match) {
my $job_id_ll=$job_match->{$match_job_row}->{'job_id'};
print $job_id_ll;
}
}
输出:-
在 perl-hash.pl 第 17 行使用 "strict refs" 时不能使用字符串 ("1") 作为哈希引用。
感谢您的帮助!
当你说
my $job_match=@_;
您在标量上下文中使用 @_
,这会为您计算数组中元素的数量。
您可以通过说以下内容将其更改为列表上下文:
my ($job_match) = @_;
我个人比较喜欢:
my $job_match = shift;
如果没有给出数组,shift
将对 @_
进行操作。但我想这是个人品味问题。
我试图准备一个带有散列和子例程的小脚本。老实说,我是 perl 的新手。有人能告诉我下面的代码有什么问题吗?我得到 Can't use string ("1") as a HASH ref 错误。
#!/usr/bin/perl
use strict;
use warnings;
no warnings 'uninitialized';
use Data::Dumper;
my %match_jobs;
push @{ $match_jobs{'1'}} , {'job_id'=>'13', 'job_title'=>'Article_9', 'job_description'=>'899.00'};
hash_iterate(\%match_jobs);
sub hash_iterate{
my $job_match=@_;
print Dumper($job_match);
foreach my $match_job_row (keys %$job_match) {
my $job_id_ll=$job_match->{$match_job_row}->{'job_id'};
print $job_id_ll;
}
}
输出:- 在 perl-hash.pl 第 17 行使用 "strict refs" 时不能使用字符串 ("1") 作为哈希引用。
感谢您的帮助!
当你说
my $job_match=@_;
您在标量上下文中使用 @_
,这会为您计算数组中元素的数量。
您可以通过说以下内容将其更改为列表上下文:
my ($job_match) = @_;
我个人比较喜欢:
my $job_match = shift;
如果没有给出数组,shift
将对 @_
进行操作。但我想这是个人品味问题。