Как получить доступ к хешу в условном хе - PullRequest
0 голосов
/ 07 марта 2012

У меня есть такой код:

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'
    ];

В настоящее время выводит только «+»

1 Ответ

3 голосов
/ 07 марта 2012

Потому что %temp не %hash.use strict сказал бы вам.

Более того, вы не можете получить оба из if / else.Либо условие выполняется, и вы получаете первую часть, либо нет, и вы получаете другую часть.(При elsif второе условие также может быть неверным, и вы ничего не получите).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...