perl - настройка условий для поиска правильного ключа в хэше - PullRequest
0 голосов
/ 30 сентября 2011

Проблема: Видение exists argument is not a HASH or ARRAY element Нужна помощь в настройке нескольких условий для захвата правой клавиши.

Код: (Я не уверен, также, если мойусловия настроены правильно. Нужен совет по устранению неполадок)

my $xml = qx(@cmdargs);
my $data = XMLin($xml);
my $size=0;

# checking for error string, if file not found then just exit
# otherwise check the hash keys for filename and get its file size
if (exists $data->{class} =~ /FileNotFound/) {
       print "The directory: $Path does not exist\n";
        exit;
          } elsif (exists $data->{file}->{path}
                      and $data->{file}->{path} =~/test-out-XXXXX/) {   
                    $size=$data->{file}->{size};
                      print "FILE SIZE:$size\n";
          } else {
        #    print  "Nothing to print.\n";
     }
     # print "$data"; 
print Dumper( $data );

Мои данные: Структура данных для файла XML с FileNotFound:

$VAR1 = {
          'file' => {},
          'path' => '/source/feeds/customer/testA',
          'class' => 'java.io.FileNotFoundException',
          'message' => '/source/feeds/customer/testA: No such file or directory.'
        };

Структура данных дляНайден XML-файл:

$VAR1 = {
              'recursive' => 'no',
              'version' => '0.20.202.1.1101050227',
              'time' => '2011-09-30T02:49:39+0000',
              'filter' => '.*',
              'file' => {
                        'owner' => 'test_act',
                        'replication' => '3',
                        'blocksize' => '134217728',
                        'permission' => '-rw-------',
                        'path' => '/source/feeds/customer/test/test-out-00000',
                        'modified' => '2011-09-30T02:48:41+0000',
                        'size' => '135860644',
                        'group' => '',
                        'accesstime' => '2011-09-30T02:48:41+0000'
                      },

1 Ответ

7 голосов
/ 30 сентября 2011

Переводчик, вероятно, думает, что вы имели в виду:

exists($data->{class}=~/FileNotFound/)  

Попробуйте:

exists $data->{class} and $data->{class}=~/FileNotFound/

вместо.

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