当前位置:  开发笔记 > 编程语言 > 正文

Perl:Foreach循环

如何解决《Perl:Foreach循环》经验,为你挑选了1个好方法。

尝试使用这段代码从XML文件中提取信息,我没有按预期获得所需的输出,我知道它在foreach循环中的内容, - >我的问题如何在这种情况下可以使用foreach循环

 use strict;
 use XML::Simple;
 use Data::Dumper;

 my %top_in_ou_bi;
 $top_in_ou_bi{"input"}{name}=add;
 $top_in_ou_bi{"input"}{name}=clk;
 $top_in_ou_bi{"input"}{name}=dat_in;
 $top_in_ou_bi{"output"}{name}=dat_out;
 $top_in_ou_bi{"bidirection"}{name}=ctrl;

 foreach my $nam(sort keys %top_in_ou_bi){
        foreach my $dat(keys %{$top_in_ou_bi{$nam}}){
                print"$nam $dat: $top_in_ou_bi{$nam}{$dat}\n";
   }
 }

输出:

bidirection name: ctrl
input name: dat_in
output name: dat_out

预期产量:

bidirection name: ctrl
input name: dat_in
input name: clk
input name: add
output name: dat_out

也使用"use strict"警告不允许使用裸词,如何超越此警告!

谢谢!

编辑

我想知道下面的代码段是否有效?

   my $top_in=$root_top->{input};
   my $top_ou=$root_top->{output};
   my $top_bi=$root_top->{bidirection};
   foreach my $name(keys %$top_in)
   {
     print "input $name\n";
    }
   foreach my $name(keys %$top_ou)
   {
     print "output $top_ou->{name}\n";
   }
   foreach my $name(keys %$top_bi)
   {
     print "bidirection $top_bi->{name}\n";
   }

Ted Hopp.. 7

它与foreach循环无关.问题是如何填充%top_in_ou_bi哈希值.哈希只能包含每个键的单个值.在密钥下存储多个值时"input",只保留最后一个值.

你可以做的最好的事情是在每个键上存储一个数组(通过引用)而不是标量值.或者您可以使用类似的模块Hash::MultiValue.

要禁止裸字警告,请不要使用裸字.引用事物('add'而不是add等)或声明变量(取决于你想要完成的事情).



1> Ted Hopp..:

它与foreach循环无关.问题是如何填充%top_in_ou_bi哈希值.哈希只能包含每个键的单个值.在密钥下存储多个值时"input",只保留最后一个值.

你可以做的最好的事情是在每个键上存储一个数组(通过引用)而不是标量值.或者您可以使用类似的模块Hash::MultiValue.

要禁止裸字警告,请不要使用裸字.引用事物('add'而不是add等)或声明变量(取决于你想要完成的事情).

推荐阅读
无名有名我无名_593
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有