нечетное количество элементов в анонимном хеше

Я пытаюсь понять этот код Perl...

Если есть один поток, то работает, если есть 2 и более потоков, то выдается предупреждение с нечетным количеством элементов в анонимном хэше. Кажется, в этом случае он возвращает массив. Как правильно добавить элементы массива в @streams? Кажется, он правильно добавляется для случая HASH в предложении if. Является ли предложение else двухъярусным?

 my $x = $viewedProjectDataObj->{streams};

    if (ref($x) eq 'HASH') {
        push(@streams, $x->{id});
    } elsif (ref($x) eq 'ARRAY') {

        print "$x\n";
        print "@$x\n";
        my @array = @$x;
        foreach my $obj (@array) {
            print "in $obj\n";
            print Dumper( $obj);
            push(@streams,  ($obj->{id}) );
        }
    }

    print "streamcount ". @streams % 2;
    print Dumper(@streams);


    my $stream_defect_filter_spec = {
        'streamIdList' => @streams,
        'includeDefectInstances' => 'true',
        'includeHistory' => 'true',
    };

    my @streamDefects = $WS->get_stream_defects($defectProxy, \@cids,             $stream_defect_filter_spec);
    print Dumper(@streamDefects);

Я добавляю следующие строки...

if ($defectSummary->{owner} eq "Various") {
    foreach (@streamDefects) {
        if (exists($_->{owner})) {
            $defectSummary->{owner} = $_->{owner};
            last;
        }
    }
}

my $diref = $streamDefects[0]->{defectInstances};
if ($diref) {
    my $defectInstance;
    if (ref($diref) eq 'HASH') {
        $defectInstance = $diref;
    } elsif (ref($diref) eq 'ARRAY') {
        $defectInstance = @{$diref}[0];
    } else {
        die "Unable to handle $diref (".ref($diref).")";
    }

Теперь ошибки с

Веб-API вернул код ошибки S :Сервер :, вызывающий getStreamDefects :Поток не найден для имени ноль. $VAR1 = -1; меня Невозможно использовать строку ("-1" )в качестве ссылки HASH, пока используются "строгие ссылки" в строке xyz -handler.pl 317.

некоторый выход дампера

$VAR1 = {
      'streamIdList' => [
                          {
                            'name' => 'asdfasdfadsfasdfa'
                          },
                          {
                            'name' => 'cpp-62bad47d63cfb25e76b29a4801c61d8d'

                          }
                        ],
      'includeDefectInstances' => 'true',
      'includeHistory' => 'true'
    };
12
задан DB- 22 July 2012 в 04:41
поделиться