Как я могу гарантировать, что никакое нулевое значение не будет присвоено переменной с помощью функции Perl grep? - PullRequest
0 голосов
/ 16 сентября 2011

Как поместить значение в скалярную переменную при использовании метода Perl grep ?

Например, у меня есть следующий код, и мне нужно поместить значение из метода per grep вскалярная переменная?

        my $variable = grep(/@/,@dataRecord);

Ответы [ 2 ]

3 голосов
/ 16 сентября 2011

, если вы имеете в виду grep вернуть 1 элемент, чем

my ($variable) = grep(/@/,@dataRecord);

иначе вы должны использовать arrayref

my $variable = [ grep(/@/,@dataRecord) ];
0 голосов
/ 16 сентября 2011

Если вам нужен только один из соответствующих элементов @dataRecord, использование grep может оказаться не самым подходящим выбором.Это связано с тем, что grep будет проверять все элементы независимо от того, сколько совпадений вы хотите извлечь.

Вы должны сначала решить, какой из потенциально более чем нескольких совпадающих элементов в @dataRecord вы хотите.Если вам нужен первый соответствующий элемент, вам лучше использовать List :: MoreUtils :: firstval :

firstval BLOCK LIST
first_value BLOCK LIST

Возвращает первый элемент в LIST, для которого BLOCKоценивает как истинное.Каждый элемент LIST по очереди установлен на $_.Возвращает undef, если такой элемент не был найден.

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