Perl $cmd输出到文件中
我有以下代码:Perl $cmd输出到文件中,perl,cmd,Perl,Cmd,我有以下代码: $cmd = system ("p4 change -o 3456789"); 我想将输出(更改列表的描述)打印到一个文件中 $cmd = system ("p4 change -o 3456789 > output_cl.txt"); 将输出写入output_cl.txt文件 但是,是否仍然可以通过$cmd获得输出 open(OUTPUT, ">$output_cl.txt") || die "Wrong Filename"; print OUTPUT ("$
$cmd = system ("p4 change -o 3456789");
我想将输出(更改列表的描述)打印到一个文件中
$cmd = system ("p4 change -o 3456789 > output_cl.txt");
将输出写入output_cl.txt
文件
但是,是否仍然可以通过$cmd
获得输出
open(OUTPUT, ">$output_cl.txt") || die "Wrong Filename";
print OUTPUT ("$cmd");
将0或1写入文件。如何从
$cmd
获取输出 要将p4
命令的输出存储到数组中,请使用:
open(OUTPUT, ">$output_cl.txt") || die "Wrong Filename";
print OUTPUT ("$cmd");
您始终可以使用以下过程将输出直接转储到文件
$cmd = system ("p4 change -o 3456789 > output_cl.txt");
1) 复制系统STDOUT
文件描述符,2)打开STDOUT,3)系统,4)将IO插槽复制回STDOUT
:
open( my $save_stdout, '>&1' ); # dup the file
open( STDOUT, '>', '/path/to/output/glop' ); # open STDOUT
system( qw<cmd.exe /C dir> ); # system (on windows)
*::STDOUT = $save_stdout; # overwrite STDOUT{IO}
print "Back to STDOUT!"; # this should show up in output
如果您在记住为了获得命令的返回值而需要运行什么与它的输出,或者如何处理不同的返回代码,或者忘记将结果代码右移时感到困惑,那么您需要,这使得所有这些都变得简单:
use IPC::System::Simple qw(system systemx capture capturex);
my $change_num = 3456789;
my $output = capture(qw(p4 change -o), $change_num);
除了使用获取命令的整个输出外,还可以获取命令输出的句柄。比如说
open my $p4, "-|", "p4 change -o 3456789"
or die "$0: open p4: $!";
现在,您可以一次读取$p4
一行,并可能像在中一样对其进行操作
while (<$p4>) {
print OUTPUT lc($_); # no shouting please!
}
while(){
打印输出lc(美元);#请不要大声叫喊!
}
您的问题令人困惑。您想要原始命令的输出p4 change-o 3456789
还是想要其他内容?如果需要原始命令的输出,请不要使用system
。相反,使用反勾号。