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

发布于 2024-12-14 23:41:07 字数 387 浏览 1 评论 0 原文

我对以下代码(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 分隔符设置的各种操作,但无济于事。有人可以帮忙吗?

I have a problem with the following code (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");

I want it to invoke echo three times and print

E A
E B
E C

but instead it outputs

E A B C

I have tried various things with the xargs delimiter settings to no avail. Can anyone help?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

嘿哥们儿 2024-12-21 23:41:07

尝试 xargs -n1 echo E <文件名.txt

Try xargs -n1 echo E < filename.txt

旧时光的容颜 2024-12-21 23:41:07

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

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

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:

open FILE, '<', 'filename.txt' or die $!;
while (<FILE>) {
    print "E $_";
}
听闻余生 2024-12-21 23:41:07

为什么不使用 fork:

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

这可以使用更多验证,并且您可以使用 Parallel::ForkManager,我认为您确实在做一些比“echo”更复杂的事情。

Why not use fork:

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

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'.

你的呼吸 2024-12-21 23:41:07
open my $file, '<', 'filename.txt' or die $!; 
while (<$file>){ 
  print "E $_"; 
}
open my $file, '<', 'filename.txt' or die $!; 
while (<$file>){ 
  print "E $_"; 
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文