加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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中使用引用的介绍

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读