Там всегда грязный путь. Использование tasklist
в Windows:
use List::Util qw<first>;
my ( $mem )
= map { ( my $a = $_ ) =~ s/,//g; $a }
grep {; length }
map { m/([\d,]+)[ ]K$/ }
first { m/^perl\.exe\s+$$\b/ }
`tasklist`;
if ( $mem > MAX_MEM ) {
do_something();
}
Но, насколько я понимаю, вы также можете сделать это следующим образом: Win32::Process::Info
:
use Win32::Process::Info;
my $pi = Win32::Process::Info->new ();
my $set = first { exists $_->{WorkingSetSize} } $pi->GetProcInfo( $$ );
my $mem = $set && $set->{WorkingSetSize};