在不使用 Perl 的情况下执行 system() 可以通过以下方法实现:
在 Perl 脚本中,可以使用 shell 命令来执行 system() 调用。例如:
my $command = "ls -l";
my $output = `$command`;
print $output;
这将执行 ls -l
命令,并将输出存储在 $output
变量中,然后打印输出。
IPC::Open2 模块允许您在 Perl 脚本中执行外部命令,并将输出重定向到变量。例如:
use IPC::Open2;
my $pid = open2(\*CHLD_OUT, \*CHLD_IN, "ls -l");
waitpid($pid, 0);
my @output = <CHLD_OUT>;
close CHLD_OUT;
close CHLD_IN;
print @output;
这将执行 ls -l
命令,并将输出存储在 @output
数组中,然后打印输出。
IPC::Run 模块提供了一个简单的接口来执行外部命令并捕获输出。例如:
use IPC::Run qw(run);
my @output;
run ["ls", "-l"], \undef, \@output;
print @output;
这将执行 ls -l
命令,并将输出存储在 @output
数组中,然后打印输出。
这些方法都可以在不使用 Perl 的情况下执行 system(),并且不会干扰 stdout。
领取专属 10元无门槛券
手把手带您无忧上云