in reply to Re^5: Retrieving information from an executable program
in thread Retrieving information from an executable program

I don't see how your output can be produced, but maybe that's because I don't see the input. It seems to me that the output of ./retrieve does not get captured in @output. What is the printout of

#!perl -w use strict; use Data::Dumper; my @output = `./retrieve 2301`; print Dumper \@output;

Replies are listed 'Best First'.
Re^7: Retrieving information from an executable program
by kitifu (Initiate) on Jul 27, 2010 at 02:07 UTC
    You are correct, it seems nothing is populated in @output variable
    CID:2301 NAME: Jane STATUS=OK $VAR1 = [];

    May you please advice how i can get @output filled by ./retrieve 2301
      I have contacted the program dev who changed their code from cerr to cout and now i can get the output. Please advice if there is anything more need to be done to optimize this code
      !/usr/bin/perl -w use strict; use warnings; use Data::Dumper; my @output = `./retrieve 2301`; chop @output; my ($name, $status, $cid); my %vars = ( 'NAME' => \$name, 'CID' => \$cid, 'STATUS' => \$status, ); for my $line (@output) { my ($key, $val) = split /:/, $line, 2; if ($vars{ $key }) { ${ $vars{ $key } } = $val; } else { warn "Unknown key '$key', discarded"; }; }; my $myID= ${ $vars{ CID } }; my $myStatus=${ $vars{ STATUS } }; my $myName=${ $vars{ NAME } }; print "My name is $myName with status $myStatus ID $myID\n";

      Output
      My name is Jane with status OK ID 2301