如何获取以下代码的输出?

时间:2015-03-14 16:45:31

标签: perl

我有一个文件output1.txt,每行有一个字符串。我想提取包含子字符串'rxd'或'txd'或'cts'或'rts'以及' UART '的字符串,该字符串应该在字符串中包含任意四个这些然后在output1.txt中写回来,但是在运行此代码后我得到一个空白文件。

#!/usr/local/bin/perl

use strict;
use warnings;
my @array1;

open my $abc , '<', 'output1.txt' or die $!;
my @array = <$abc>;
foreach $_ (@array) {
    my @array1 = grep {
        ( /txd/ || /rxd/ || /cts/ || /rts/ ) && ( /_UART_/ )
    } (@array);
}
close $abc;

open my $f1 , '>', 'output1.txt' or die $!;
foreach (@array1) {
    print $f1 "$_\n";
}
close $f1;

1 个答案:

答案 0 :(得分:0)

my @array1 = grep ...中,删除my。你在foreach循环中声明了一个 new @array1,它在循环之外不存在,而原始的@array1保持为空。