Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Perl中访问条件内哈希的哈希_Perl_Data Structures_Hash - Fatal编程技术网

如何在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
,第二个条件也可能不正确,您将一无所获)。

您是对的。但它没有打印“-”号?我更新了更改。你真的不应该修正这个问题-这会使答案变得无关紧要,对其他人没有用处。