在linux中,要连接文件夹下的所有文件,你可以file=FOLDER/*; cat $file > ONEFILE
,我也想在我的perl脚本中使用它,所以我编码为system("file=$folder/*");
system("cat \$file > $out");
但是当我运行perl程序时它不起作用,$ out被分配了一个文件名my $out = "outfile";
。 outfile始终保持为0位。这里有什么不对。
答案 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"'