我没有运气地试过以下所有事情:
system "cat f1 f2 >! f3";
system 'cat f1 f2 >! f3';
system "cat f1 f2 \>\! f3";
`cat f1 f2 >! f3`;
我该怎么做?
答案 0 :(得分:3)
这似乎是csh
命令,因此您需要使用csh
。
system('/bin/csh', '-c', 'cat f1 f2 >! f3');
那就是说,csh
是一个非常糟糕的外壳。您应该考虑切换到bourne shell(特别是脚本)。
system('/bin/sh', '-c', 'cat f1 f2 > f3');
以上内容可以缩短为:
system('cat f1 f2 > f3');
答案 1 :(得分:2)
>!
重定向运算符不是标准运算符。它可能不存在于perl用于运行命令的/bin/sh
中。 >|
更为普遍。由于>!
或>|
的目的是覆盖noclobber设置,因此您根本不需要使用它。您可能希望在交互式shell中使用noclobber,但在脚本中不应启用它,>
应与>|
的工作方式相同。
在任何情况下,使用system
不是从perl执行基本文件操作任务的最有效方法。