繁体   English   中英

将perl变量发送到命令并捕获输出

[英]Send perl variables to a command and capture the output

我正在尝试将perl变量传递给系统命令,然后捕获输出以供以后使用,这是我当前的代码:

my $updatedCmd = "|svn diff --summarize $svnOldFull $svnNewFull";
my $updatedUrls = '';
open UPDATES, $updatedCmd or die "Can't get updates";
while(<UPDATES>) {
  print $_;
}

print "THIS_SHOULD_OUTPUT_AT_THE_END\n";

这个问题是我得到了输出:

THIS_SHOULD_OUTPUT_AT_THE_END
A       /test
A       /test2
A       /deployment.txt

我希望能够在允许我的perl脚本更进一步之前捕获所有命令输出。

更现代的方法是:

   my @cmd = qw(svn diff --summarize), $svnOldFull, $svnNewFull;
   open my $pipe, '-|', @cmd or die "oops: $!";
   while (<$pipe>) { ... }

好处

  • 没有全局变量

  • 打开模式与文件/命令分开

  • 命令为数组,因此不需要shell引用

您将管道放在命令的错误一端。 尝试这个:

my $updatedCmd = "svn diff --summarize $svnOldFull $svnNewFull|";

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM