perl – 如何将散列传递给子例程?

前端之家收集整理的这篇文章主要介绍了perl – 如何将散列传递给子例程?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
需要帮助弄清楚如何做到这一点。我的代码
my %hash;
$hash{'1'}= {'Make' => 'Toyota','Color' => 'Red',};
$hash{'2'}= {'Make' => 'Ford','Color' => 'Blue',};
$hash{'3'}= {'Make' => 'Honda','Color' => 'Yellow',};


&printInfo(%hash);

sub printInfo{
   my (%hash) = %_;
   foreach my $key (keys %_{       
    my $a = $_{$key}{'Make'};   
    my $b = $_{$key}{'Color'};   
    print "$a $b\n";
    }
}

解决方法

代码发展时,可能会导致问题的简单方法是简单地通过将默认数组@_(其中包含所有键值对作为偶数列表)分配给%哈希,然后依次重新构建。所以你的代码看起来像这样:
sub printInfo {
   my %hash = @_;
   ...
}

更好的方法是将散列作为子程序的引用传递。这样,您仍然可以将更多参数传递给子程序。

printInfo(\%hash);
sub PrintInfo {
   my %hash = %{$_[0]};
   ...
}

perlreftut中可以找到在Perl中使用引用的介绍

猜你在找的Perl相关文章