use strict; use warnings; use Win32::Process; use Win32; use Data::Dumper; my $netstat_obj; my $create_status = Win32::Process::Create( $netstat_obj, 'C:/Windows/System32/netstat.exe', 'netstat -a -e -n -o -s -r', 0, DETACHED_PROCESS | CREATE_NO_WINDOW | CREATE_SUSPENDED, 'C:/temp/' ) || die Win32::FormatMessage(Win32::GetLastError()); print Data::Dumper->new(['1', $create_status, $netstat_obj], ['where__________', 'create_status', 'netstat_obj'])->Indent(1)->Sortkeys(1)->Useqq(1)->Deparse(1)->Dump(); my $NETSTAT_FH; my $open_status = Win32::Process::Open( $NETSTAT_FH, $netstat_obj->GetProcessID(), 0 ) || die Win32::FormatMessage(Win32::GetLastError()); print Data::Dumper->new(['2', $open_status, $NETSTAT_FH], ['where__________', 'open_status', 'NETSTAT_FH'])->Indent(1)->Sortkeys(1)->Useqq(1)->Deparse(1)->Dump(); $netstat_obj->Resume(); my $netstat_data = ''; { my $offset = 0; my $length = 1024; my $buffer = undef; while(my $bytes_read = $NETSTAT_FH->sysread($buffer, $length, $offset)) { if(defined $bytes_read) { $netstat_data .= $buffer; $buffer = undef; last if($bytes_read == 0); $offset += $bytes_read; } else { die "ERROR: Could not read from NETSTAT_FH: $! "; } } } $netstat_obj->Wait(2000); my $netstat_exit; $netstat_obj->GetExitCode($netstat_exit); print Data::Dumper->new(['3', $netstat_obj, $NETSTAT_FH, $netstat_data], ['where__________', 'netstat_obj', 'NETSTAT_FH', 'netstat_data'])->Indent(1)->Sortkeys(1)->Useqq(1)->Deparse(1)->Dump(); #### C:\temp>perl.exe sandbox.pl $where__________ = 1; $create_status = 1; $netstat_obj = bless( do{\(my $o = 1776208)}, 'Win32::Process' ); $where__________ = 2; $open_status = 1; $NETSTAT_FH = bless( do{\(my $o = 1777552)}, 'Win32::Process' ); Your vendor has not defined Win32::Process macro sysread, used at sandbox.pl line 32. (Error was: 'Invalid argument') at C:/xampp/perl/site/lib/Win32/Process.pm line 53.