in reply to Re^3: Convert from c# to Perl
in thread Convert from c# to Perl

Yeah, I was trying to get it to stop displaying the intro/header of psexec

PsExec v1.96 - Execute processes remotely Copyright (C) 2001-2009 Mark Russinovich Sysinternals - www.sysinternals.com netstat exited on webd15 with error code 0.

Replies are listed 'Best First'.
Re^5: Convert from c# to Perl
by repellent (Priest) on Aug 12, 2010 at 06:30 UTC
    According to online sources, it seems that psexec sends its output to stderr. This ought to work:
    use File::Temp qw(tempfile); my $stderr_fh = tempfile(); my $stdout = do { open(*STDERR, ">&", $stderr_fh) or die "Could not capture STDERR: $!"; qx(psexec \\\\server netstat -n); }; seek($stderr_fh, 0, 0); my $stderr = do { local $/; <$stderr_fh> }; print "psexec stdout: $stdout\n"; print "-" x 60, "\n"; print "psexec stderr: $stderr\n";

    My previous code did not work for a couple of reasons:
    • The ">", \$stderr form of open failed on Win32 for some reason. Worked around using a temp file.
    • Can't localize *STDERR.