在perl中使用linux shell脚本连接一个文件夹中的文件

时间:2012-06-26 17:16:36

标签: perl

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

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

2 个答案:

答案 0 :(得分:1)

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

system "file=$folder/*";

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

system "cat \$file > $out";

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

cat  > $out

请改为:

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

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

答案 1 :(得分:0)

Perl中的exec是什么?

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