如何确保使用Perl grep函数不为变量分配空值?

时间:2011-09-16 04:00:32

标签: perl

如何在使用Perl的grep方法时将值放入标量变量?

例如,我有以下代码,需要将每个grep方法的值放入标量变量吗?

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

2 个答案:

答案 0 :(得分:3)

如果你的意思是grep返回1个元素而不是

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

否则你应该使用arrayref

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

答案 1 :(得分:0)

如果您只需要@dataRecord的匹配元素之一,则使用grep可能不是最合适的选择。这是因为grep将检查所有元素,无论您要提取多少匹配。

您必须首先确定@dataRecord中可能有多个匹配元素中的哪一个。如果你想要第一个匹配元素,最好使用List::MoreUtils::firstval

firstval BLOCK LIST
first_value BLOCK LIST
     

返回BLOCK评估为true的LIST中的第一个元素。 LIST的每个元素依次设置为$_。如果没有找到这样的元素,则返回undef。