perl - For 循环以匹配数组中所需的记录值

标签 perl

我想打印那些有 5 个管道分隔符且名字与 CHINA 匹配的记录。 我尝试了以下方法但没有输出。

my @country_records = (
    'CHINA|hk|UK|pak|ind|arg',
    'HK|UK|Pak|ARG|Nep',
    'Lon|WC|Chile|SA',
    'CHINA|hk|UK|pak|arg|ind',
    'CHINA|AFg|UK|pak|arg',
);

for my $item (@county_records) {
    my $value =  q( awk -F '|' -v string=CHINA 'NF == 5 && $item == string' );
    my $record = system($value);
    print $item;
}

最佳答案

无需为此调用 awk:

my @items = split /\|/, $item, -1;
if ((@items == 6) && ($items[0] eq 'CHINA')) {
    print $item;
}

split| 字符上,然后检查它给出 6 个项目,第一个是 CHINA

关于perl - For 循环以匹配数组中所需的记录值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24366809/

相关文章:

perl - 如何检测 perl 的 ActiveState 版本?

linux - 从 Linux 终端运行 PERL 脚本时保留重音字母

perl - emacs 使用空格而不是制表符对齐正则表达式

perl - Perl 的 "$a"函数中的 "$b"和 "sort()"到底是什么?

javascript - 将 href perl 变量转换为普通标量变量

regex - 从已截断为不同长度的字符串末尾删除单词

regex - 如何在没有插值的情况下在正则表达式中多次匹配行尾?

用于对齐语料库的 Perl 脚本

perl - 使用命名空间时使用 Perl 和 LibXML 获取子节点值

perl - 通过列表中的键值对创建哈希