Perl + 将 shell 脚本语法翻译为 perl + 正则表达式

Perl + 将 shell 脚本语法翻译为 perl + 正则表达式

在我的系统中/var/tmp,有以下文件:

 ls | grep FILE
   AAA-FILE.xml
   BBB-FILE.xml

使用以下命令我剪切了文件的第一个字,如下所示:

ls /var/tmp | grep FILE.xml | sed "s/.FILE.*//"

我得到:

AAA
BBB

我如何使用 Perl 执行相同的操作以将“AAA”和“BBB”插入到 @RESULTS 中?例如:

@RESULTS=perl syntax ...

答案1

假设你想继续使用现有的命令,你可以这样做

my @results = `ls /var/tmp | grep FILE.xml | sed "s/.FILE.*//"`;
chomp for @results;

chomp 是为了删除尾随的换行符。

无需调用外部命令:

my @results;
opendir DIR,"/var/tmp" or die "Cannot open dir: $!";
for (readdir DIR) {
    /(.*)-FILE.*/ or next;
    push @results, $1;
}
closedir DIR;

答案2

@RESULTS = grep(s[/var/tmp/(.*)-FILE.xml][$1],</var/tmp/*>);

答案3

@RESULTS = map /(.*)-FILE\.xml$/, <*-FILE.xml>;

答案4

perl -nE'next unless s/-FILE.*//; push state @lines, $_; die @lines if eof;' /var/tmp

相关内容