perl调用xargs:行尾分隔符不起作用

时间:2011-11-10 19:56:29

标签: perl delimiter xargs

我遇到以下代码(Perl / Cygwin)的问题

#!/usr/bin/perl
open FILE, ">", "filename.txt" or die $!;
print FILE "A\n";
print FILE "B\n";
print FILE "C\n";
close (FILE); 
system("xargs echo E < filename.txt");

我想让它调用echo三次并打印

E A
E B
E C

但是输出

E A B C

我已尝试使用xargs分隔符设置进行各种操作但无济于事。有人可以帮忙吗?

4 个答案:

答案 0 :(得分:4)

尝试xargs -n1 echo E&lt; FILENAME.TXT

答案 1 :(得分:1)

'xargs'正在做它应该做的事情。为什么要生成一个外部进程来做Perl可以做的事情?相反,请关闭您的文件并执行:

open FILE, '<', 'filename.txt' or die $!;
while (<FILE>) {
    print "E $_";
}

答案 2 :(得分:1)

为什么不使用fork:

my @arr = qw(A B C);
for my $c (@arr) {
  fork and next;
  exec( echo => $c );
}

这可以使用更多的验证,并且您可以使用Parallel::ForkManager之类的内容更多地控制您拥有的并发进程数,并且我假设您实际上正在做的事情比“echo”更多。

答案 3 :(得分:0)

open my $file, '<', 'filename.txt' or die $!; 
while (<$file>){ 
  print "E $_"; 
}