1

在linux中,要连接文件夹下的所有文件,你可以这样做file=FOLDER/*; cat $file > ONEFILE,我也想在我的perl脚本中使用它,所以我编码为system("file=$folder/*"); system("cat \$file > $out");

但是当我运行 perl 程序时它不起作用, $out 被分配了一个文件名为my $out = "outfile";. outfile 始终保持在 0 位。这里有什么问题。

4

2 回答 2

1

第一行在$file新的 shell 进程中设置环境变量:

system "file=$folder/*";

第二行使用新环境启动一个新的 shell 进程:

system "cat \$file > $out";

由于它是一个新进程,具有一个新环境,因此您之前的$file变量不再设置,因此您实际上是在运行以下 shell 命令:

cat  > $out

改为这样做:

system "cat '$folder/'* > '$out';

注意 - 我还添加了引号,如果您的路径可能包含空格,这将有所帮助。但是,对于所有形式的输入仍然不安全,因此不要在未先验证之前将任何用户输入传递给该命令。

于 2012-06-26T17:22:20.960 回答
0

execPerl 有什么用?

perl -e 'exec "cat *.txt"'

于 2012-06-26T17:22:12.117 回答