Function Perl哈希引用作为子例程的参数-Can';不要将字符串用作哈希引用

Function Perl哈希引用作为子例程的参数-Can';不要将字符串用作哈希引用,function,perl,hash,hashref,Function,Perl,Hash,Hashref,我试着准备一个带有散列和子例程的小脚本。老实说,我是perl方面的新手。有人能告诉我下面的代码有什么问题吗。Im getting无法将字符串(“1”)用作哈希引用错误 #!/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'

我试着准备一个带有散列和子例程的小脚本。老实说,我是perl方面的新手。有人能告诉我下面的代码有什么问题吗。Im getting无法将字符串(“1”)用作哈希引用错误

#!/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
将在未给出数组的情况下对
@
进行操作。但我想这是个人品味的问题。

当你说

my $job_match=@_;
您正在标量上下文中使用
@
,这将获得数组中元素的计数。 您可以通过以下方式将其更改为列表上下文:

my ($job_match) = @_;
我个人更喜欢:

my $job_match = shift;

shift
将在未给出数组的情况下对
@
进行操作。但我想这是个人口味的问题。

如果没有给出数组,将在子例程中对@uu进行操作,并在任何子例程之外对@ARGV进行操作。谢谢你们的帮助。我在这里使用了shift,并对哈希数组进行了一些更改。如果没有给出数组,将在子例程中对@uu进行操作,并在任何子例程之外对@ARGV进行操作。谢谢大家的帮助。我在这里使用了shift,并对哈希数组进行了一些更改以使其工作