在linux中,要连接文件夹下的所有文件,你可以这样做file=FOLDER/*; cat $file > ONEFILE
,我也想在我的perl脚本中使用它,所以我编码为system("file=$folder/*");
system("cat \$file > $out");
但是当我运行 perl 程序时它不起作用, $out 被分配了一个文件名为my $out = "outfile";
. outfile 始终保持在 0 位。这里有什么问题。
在linux中,要连接文件夹下的所有文件,你可以这样做file=FOLDER/*; cat $file > ONEFILE
,我也想在我的perl脚本中使用它,所以我编码为system("file=$folder/*");
system("cat \$file > $out");
但是当我运行 perl 程序时它不起作用, $out 被分配了一个文件名为my $out = "outfile";
. outfile 始终保持在 0 位。这里有什么问题。
第一行在$file
新的 shell 进程中设置环境变量:
system "file=$folder/*";
第二行使用新环境启动一个新的 shell 进程:
system "cat \$file > $out";
由于它是一个新进程,具有一个新环境,因此您之前的$file
变量不再设置,因此您实际上是在运行以下 shell 命令:
cat > $out
改为这样做:
system "cat '$folder/'* > '$out';
注意 - 我还添加了引号,如果您的路径可能包含空格,这将有所帮助。但是,对于所有形式的输入仍然不安全,因此不要在未先验证之前将任何用户输入传递给该命令。
exec
Perl 有什么用?
perl -e 'exec "cat *.txt"'