我有这样的代码:
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'
];
目前只提供“+”输出
答案 0 :(得分:3)
因为%temp
不是%hash
。 use strict
会告诉你的。
此外,你不能同时获得if / else
。条件是真的你得到第一部分,或者它不是,你得到了其他部分。 (对于elsif
,第二个条件可能也不正确,你什么也得不到。)