Linux Perl,如何使用管道将多个文件cat到同一个filehandler中?

Linux Perl,如何使用管道将多个文件cat到同一个filehandler中?,linux,perl,filehandler,Linux,Perl,Filehandler,我一直在尝试将多个文件分配给单个文件句柄。然后处理整个文件句柄以查找特定模式,然后将其写入FIN_结果 Linux exp文件 我的/dir1/结果 我的/dir2/结果 等等 这是我一次笨拙的尝试 open (FIN_RESULTS, ">", "FIN_RESULTS.txt") or die $!; open(RESULTS, "-|"," find my/ -name RESULTS -print0 | xargs -0 cat"); while(<RES

我一直在尝试将多个文件分配给单个文件句柄。然后处理整个文件句柄以查找特定模式,然后将其写入FIN_结果

Linux
exp文件
我的/dir1/结果
我的/dir2/结果
等等

这是我一次笨拙的尝试

   open (FIN_RESULTS, ">", "FIN_RESULTS.txt") or die $!;

   open(RESULTS, "-|"," find my/ -name RESULTS -print0 | xargs -0 cat");
   while(<RESULTS>){
        if(/match_something/){
           do some commands;
           print FIN_RESULTS $_;
         }
close FIN_RESULTS;
close RESULTS;
但是我得到了这个错误,xargs:cat:被信号13终止。
因此,不允许多次重新打开文件句柄。关于我能做什么有什么建议吗?

假设您真的想做外部查找:

open RESULTS, "-|", "find my -name RESULTS -print0 | xargs -0 cat"

应该做你想做的。

假设你真的想做外部查找:

open RESULTS, "-|", "find my -name RESULTS -print0 | xargs -0 cat"

应该执行您想要的操作。

Perl中的
open
函数有两种格式:

两个参数调用:

open (RESULTS, "|find my/ -name 'RESULTS'")
两个参数的调用很简单,但如果您碰巧有一个以垂直管道开头的文件名,则会出现问题

另一种是首选的三参数语法:

open (RESULTS, "-|", "find my/ -name 'RESULTS'")
此语法使用第二个参数来说明您正在执行的打开类型:

">" -  Write
">>" - Append
"<"  - Read
"-|" - Read from command
"|-" - Write to command
“>”-写入
“>>”-追加

“Perl中的
open
函数有两种格式:

两个参数调用:

open (RESULTS, "|find my/ -name 'RESULTS'")
两个参数的调用很简单,但如果您碰巧有一个以垂直管道开头的文件名,则会出现问题

另一种是首选的三参数语法:

open (RESULTS, "-|", "find my/ -name 'RESULTS'")
此语法使用第二个参数来说明您正在执行的打开类型:

">" -  Write
">>" - Append
"<"  - Read
"-|" - Read from command
"|-" - Write to command
“>”-写入
“>>”-追加

“你能更清楚地知道你想要完成什么吗?我不确定“用多个文件打开一个文件句柄[r]”是什么意思。你期望这个脚本做什么?我不清楚你想做什么。你能澄清一下吗?带项目符号的分步描述(即不是代码)会很有帮助。你能更清楚地说明你想要完成什么吗?我不确定“用多个文件打开一个文件句柄[r]”是什么意思。你期望这个脚本做什么?我不清楚你想做什么。你能澄清一下吗?带项目符号的分步描述(即非代码)会有所帮助。谢谢您的帮助。我只是想知道为什么“-|”必须用逗号分隔。我想我理解xargs函数。它用于从find命令中分隔空格和换行符。。。对吗?谢谢你的帮助。我只是想知道为什么“-|”必须用逗号分隔。我想我理解xargs函数。它用于从find命令中分隔空格和换行符。。。对吗?