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

Hello Corion
May you please advice how i can assign this $vars{ $key } to my own variable, say my $newstatus=$status or something like that. I want to do some extra manipulation with the retrieved data?

Sam

Replies are listed 'Best First'.
Re^5: Retrieving information from an executable program
by Corion (Patriarch) on Jul 26, 2010 at 16:54 UTC
Re^5: Retrieving information from an executable program
by kitifu (Initiate) on Jul 26, 2010 at 18:52 UTC
    May you please look at this code and advice why the output isn't one of levels defines;
    #!/usr/bin/perl use strict; use warnings; use Data::Dumper; my @output = `./retrieve 2301`; my ($name, $status, $cid); my $deref="LEVEL0"; my %vars = ( 'NAME' => \$name, 'CID' => \$cid, 'STATUS' => \$status, ); for my $line (@output) { $deref= "LEVEL1"; my ($key, $val) = split /:/, $line, 2; $deref="LEVEL2"; if ($vars{ $key }) { ${ $vars{ $key } } = $val; $deref= "LEVEL3"; } else { warn "Unknown key '$key', discarded"; $deref= "LEVEL5"; }; }; my $hashref = \%vars; print "\n$deref\n"; print "\n$hashref->{CID}\n"; print "\n$hashref->{NAME}\n"; print "\n$hashref->{STATUS}\n";

    And the output is
    CID: 2301 NAME:Jane STATUS:OK LEVEL0 SCALAR(0x8870e78) SCALAR(0x8870e60) SCALAR(0x8870e30)

    Note that only LEVEL0 output is displayed. I have also notice that, the output for CID, NAME and STATUS are from ./retrieve backquotes.

      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;
        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