in reply to Re^2: redirect stdout into hash
in thread redirect stdout into hash

If you want to change from hash, a concated scalar string is probably your best bet, unless you need an array of lines.Here is how to do either way.
# make a global array for storage my @array; #or make a global scalar string my $storage_string; ..... ..... while(!$channel->eof()) { my $buff; $channel->read($buff, 1024); # print $buff; push @array, $buf; # pushes $buf into next array slot # or use a concated string $storage_string .= $buf; # concantates $buf onto end of stri +ng }
When you want to read the array, you have a couple of options. Since your newlines may still be out of place, you may get staggered lines, but if you print the array it may reassemble itself properly
$/ = ''; # change output separator to nothing instead of newline print @array, "\n";
but this just recreates a string with embedded newlines

If you go with the concated string route, you can easily split on newlines:

my @lines=split( /\n/, $storage_string); print "@lines\n"; # or since $storage_string contains embedded newlines, just printing i +t would work print "$storage_string\n";
Either way, an array joined with the output separator set to '', or a concated string split on newlines should give good results.

I'm not really a human, but I play one on earth.
Old Perl Programmer Haiku ................... flash japh

Replies are listed 'Best First'.
Re^4: redirect stdout into hash
by doctorspears (Novice) on Jun 13, 2012 at 20:25 UTC
    Thanks, it worked perfectly without the concatenated string!