我有一个文件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;
答案 0 :(得分:0)
在my @array1 = grep ...
中,删除my
。你在foreach循环中声明了一个 new @array1
,它在循环之外不存在,而原始的@array1
保持为空。