如何在Perl中访问条件内哈希的哈希
我有这样一个代码:如何在Perl中访问条件内哈希的哈希,perl,data-structures,hash,Perl,Data Structures,Hash,我有这样一个代码: use Data::Dumper; my %hash = ( 'chrX' => { 'b' => [ '-51811268 210', '-51810794 350', '-51809935 298'
use Data::Dumper;
my %hash = (
'chrX' => {
'b' => [
'-51811268 210',
'-51810794 350',
'-51809935 298'
],
'f' => [
'51929018 210',
'51929492 350',
'51930351 298'
]
}
);
foreach my $cnam ( keys %hash ) {
my @lpos_f = ();
my @lpos_b = ();
if ( $hash{$cnam}{"f"} ) {
@lpos_f = @{ $hash{$cnam}{"f"} };
print "+\n";
print Dumper \@lpos_f;
}
elsif ( $hash{$cnam}{"b"} ) {
@lpos_b = @{ $hash{$cnam}{"b"} };
print "-\n";
print Dumper \@lpos_b;
}
}
为什么它没有在每个ELSIF条件下提供打印输出
它给出了这两个
+
[
'51929018 210',
'51929492 350',
'51930351 298'
];
-
['-51811268 210',
'-51810794 350',
'-51809935 298'
];
目前它只给出“+”输出,因为
%temp
不是%hash
<代码>使用严格的会告诉你的
此外,您不能同时获得
if/else
。要么条件为真,得到第一部分,要么条件为非真,得到另一部分。(对于elsif
,第二个条件也可能不正确,您将一无所获)。您是对的。但它没有打印“-”号?我更新了更改。你真的不应该修正这个问题-这会使答案变得无关紧要,对其他人没有用处。