Понимание синтаксиса в Perl - PullRequest
0 голосов
/ 25 апреля 2020

У меня может быть очень простой вопрос о том, как понять, как на самом деле работает синтаксис из Perl.

        unless ($alleles{$child}) {
            say (join "\t","line $.","no alleles in child") if $debug;
            next LINE;

Я хочу добиться того, чтобы у меня не было более 1 дочернего элемента в массиве, поэтому мне нужно избавиться от $ child и заменить его на массив @children, но есть некоторые строки, в которых я не знаю, сработает ли это, просто изменив $ child на массив. Поэтому, когда я изменяю его на массив, это действительно go через все элементы массива?

1 Ответ

0 голосов
/ 26 апреля 2020

Я не могу точно сказать, что вы хотите, но я думаю, что это одно из следующего:

use List::Util qw( any );

# If $alleles{$_} is true for one or more element of @children
if ( any { $alleles{$_} } @children ) {
   ...
}

use List::Util qw( all );

# If $alleles{$_} is true for every element of @children
if ( all { $alleles{$_} } @children ) {
   ...
}

# If $alleles{$_} is true for more than one element of @children
if ( ( grep { $alleles{$_} } @children ) > 1 ) {
   ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...