in reply to Confused with Net::OpenSSH - capture2()?

The following capture2 call works for me.
my ($stdout, $stderr) = $ssh->capture2(echo => -n => '00 , 99.')

It doesn't seem to be have any problem handling output starting by 00.

Also, as you are not posting the full script, it is difficult to know if the issue may be originating somewhere else.

Try including the following code just after the capture2 method call and posting here its output:

use Data::Dumper; print Dumper([$cmd, $edr, $stderr, $?, $ssh->error]);

Replies are listed 'Best First'.
Re^2: Confused with Net::OpenSSH - capture2()?
by tuckito (Initiate) on Feb 04, 2016 at 12:43 UTC
    You sir are my hero!
    "somewhere else" is the key and I'm embarassed that I spent hours on this error.
    I noticed that I pasted the wrong find command which is related to a different set of files I try to process.
    The files from which I get the string starting with 00 are found by another find command for which I forgot to change the "old" call of capture() to capture2().
    As said before I switched because of the sporadic ssh connection loss (which is out of scope for this "undef" issue).
    But then I forgot that there is a second find/awk command with an additionally condition that works on a subset of files (containing the 00) that "coincidentally" get processed by an additional call of capture() which I forgot to change to capture2().
    Basically the string $edr is empty because capture() is returning an array which I afterwards try to fill with a split on an empty $edr.
    It's always the simplest error that soaks up the most time for troubleshooting :-)