/ / ako získať text cez spätné odkazy alebo systém v Perle - perl, spätné odkazy

ako získať text prostredníctvom backticks alebo systému v Perl - perl, backticks

Chcem zavolať súbor EXE v Perle, ktorý vykoná nejakú akciu

Skúsil som zavolať súbor exe cez backtick a system ale v obidvoch prípadoch dostávam iba návratovú hodnotu

Súbor exe tlačí nejaký text na konzolu. Je možné zachytiť aj to?

Pozrel som sa do tejto premennej ${^CHILD_ERROR_NATIVE} ale dostanem iba návratovú hodnotu a nie text

Používam Perl 5.14

Vopred ďakujem

odpovede:

5 pre odpoveď č. 1

Aplikácia nemusí tlačiť svoj výstup na STDOUT ale STDERR namiesto toho operátor backtick nie je zachytený. Na zachytenie oboch môžete použiť nasledovné:

my $binary = "foo.exe";
my $output = `$binary 2>&1`;

Pre lepšie vyladenie snímok sa možno budete chcieť uchýliť IPC::Open3 pomocou ktorého môžete „riadiť“ všetky prúdy procesu (IN, OUT a ERR).


1 pre odpoveď č. 2

Vykonával som príkazy z perl skriptu a takto som zachytával výstup

sub execute_command() {
my($host) = @_;
open(COMMAND_IN, "your_command |");
while (<COMMAND_IN>)
{ #The COMMAND_IN will have the output of the command
#Read the output of your command here...
$ans = $_;
}
close(COMMAND_IN);
return $ans;
}

Skontrolujte, či vám to pomáha


1 pre odpoveď č. 3

Odporúčam capture a capture_err funkcie od Písma.

use Scriptalicious qw(capture);

my $output = capture("my_command", "arg");