perl – 如何将散列传递给子例程?
发布时间:2020-12-15 21:17:41 所属栏目:大数据 来源:网络整理
导读:需要帮助弄清楚如何做到这一点。我的代码: 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
需要帮助弄清楚如何做到这一点。我的代码:
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 $bn"; } } 解决方法
当代码发展时,可能会导致问题的简单方法是简单地通过将默认数组@_(其中包含所有键值对作为偶数列表)分配给%哈希,然后依次重新构建。所以你的代码看起来像这样:
sub printInfo { my %hash = @_; ... } 更好的方法是将散列作为子程序的引用传递。这样,您仍然可以将更多参数传递给子程序。 printInfo(%hash); sub PrintInfo { my %hash = %{$_[0]}; ... } 在perlreftut中可以找到在Perl中使用引用的介绍 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |