尝试使用这段代码从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";
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
bidirection name: ctrl
input name: dat_in
output name: dat_out
Run Code Online (Sandbox Code Playgroud)
预期产量:
bidirection name: ctrl
input name: dat_in
input name: clk
input name: add
output name: dat_out
Run Code Online (Sandbox Code Playgroud)
也使用"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";
}
Run Code Online (Sandbox Code Playgroud)
它与foreach循环无关.问题是如何填充%top_in_ou_bi哈希值.哈希只能包含每个键的单个值.在密钥下存储多个值时"input",只保留最后一个值.
你可以做的最好的事情是在每个键上存储一个数组(通过引用)而不是标量值.或者您可以使用类似的模块Hash::MultiValue.
要禁止裸字警告,请不要使用裸字.引用事物('add'而不是add等)或声明变量(取决于你想要完成的事情).
| 归档时间: |
|
| 查看次数: |
198 次 |
| 最近记录: |