Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl $cmd输出到文件中_Perl_Cmd - Fatal编程技术网

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
。相反,使用反勾号。