arrays - 如何对数组使用 Perl 的 grep 函数?

标签 arrays regex perl list grep

我正在尝试使用 Perl 中的 grep 函数来查找数组中正则表达式的匹配数。我知道 grep 应该采用一个列表作为其参数,但不幸的是我试图访问的数据是数组的形式。这是我的问题的简化示例:

using strict;
using warnings;

my @test = qw(AAA AAB AAC);
my @test2 = ["AAA", "AAB", "AAC"];

my @results = grep(m/AA./, @test);
my @results2 = grep(m/AA./, @test2);

print @results . "\n";
print @results2 . "\n";

第一个打印输出 3,因为列表中的每个成员都匹配。第二次打印打印出 0,我假设这是因为 grep 不喜欢该数组。我应该使用其他替代方案还是我的语法不正确?

最佳答案

@test2 仅包含一个元素,即数组引用,并且正则表达式强制字符串化,这是您可能没有想到的,

use strict;
use warnings;

my @test = qw(AAA AAB AAC);
my @test2 = ["AAA", "AAB", "AAC"];

print "$_\n" for @test;
print "$_\n" for @test2;

输出

AAA
AAB
AAC
ARRAY(0x85bfda8)

使用my @test2 = ("AAA", "AAB", "AAC");引用词运算符替代my @test2 = qw( AAA AAB AAC);

关于arrays - 如何对数组使用 Perl 的 grep 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28821298/

相关文章:

string - 使用perl计算字符串中的大写字母

regex - Perl 使用 file2 从 file1 中删除单词

perl - 当我不再需要 Log4perl 记录器时处理它

c - c 中的结构数组 : giving all the strings same values (with the int it works well). 我该怎么办?

javascript - 允许 Vue 2 Select Component 接受一个数组来选择选项

java - 在动态字符串中形成正确的正则表达式

regex - 所有正则表达式实现的列表?

数组元素和 charAt 变量之间的 Java 类型错误

头文件中定义的 C calloc 3d 数组,无效读取错误

c# - 正则表达式嵌套括号