Perl 调用 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 分隔符设置的各种操作,但无济于事。有人可以帮忙吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
尝试 xargs -n1 echo E <文件名.txt
Try xargs -n1 echo E < filename.txt
'xargs' 正在做它应该做的事情。为什么要生成一个外部进程来完成 Perl 可以做的事情?相反,关闭您的文件并执行以下操作:
The 'xargs' is doing exactly what it should. Why spawn an external process to do what Perl can do? Instead, close your FILE and do:
为什么不使用 fork:
这可以使用更多验证,并且您可以使用 Parallel::ForkManager,我认为您确实在做一些比“echo”更复杂的事情。
Why not use fork:
This could use some more validation, and you can get more control over how many concurrent processes you have with something like Parallel::ForkManager, and I assume you're really doing something more involved than 'echo'.