0
我試圖執行一個shell命令,並使用反引號Perl中捕捉它的輸出,並且輸出發送到標準輸出的同時,重定向輸出到perl變量和stdout
#!/usr/bin/perl
use strict;
use warnings;
my $output = `echo test1 | tee /dev/fd/1`;
print "op : $output";
這工作,給我這樣的輸出,
op : test1
test1
然而,當我指定的命令到一個數組而不是一個標量輸出,它並沒有像以前那樣工作,
my @output = `echo test1 | tee /dev/fd/1`;
print "op : $output[0]";
這將打印數組變量,但不是echo
輸出,
op : test1
意味着罩體命令輸出不被髮送到STDOUT。有人可以解釋爲什麼會這樣嗎?
任何幫助非常感謝。
你的第一個版本沒有做你認爲正在做的事情。 STDOUT被重定向到perl的管道,所以你只需將兩行輸出寫入STDOUT,並且兩者都以perl變量結束。在第二個版本中,第二個副本位於'$ output [1]'中。 – Barmar
非常感謝您指出 - 什麼纔是正確的方法呢? –
不是,我在發佈之前查看了這個問題。我的問題與此並不相同,因爲我沒有真正問過*如何做到這一點。 –