#!/usr/bin/perl -wl use strict; use Data::Dumper::Simple; my %stats; my $expected_keys = 5; my $top = "/usr/bin/top -b -n 1"; open(TOP, "$top|") or die "Cannot read top:$!"; while (my $line = ) { if ($line =~ /up\s.+\s(\d+)\suser.+\s+load\saverage:\s+(\d+\.\d{2}),/){ $stats{users}=$1; $stats{load}=$2; } elsif ($line =~ /(?:Tasks|processes):.+\s+(\d+) running/i){ $stats{runproc}=$1; } elsif ($line =~ /^Mem:\s+(\d+)k\s+(?:total|av),.+used,\s+(\d+)k\s+free/){ $stats{tmem}=$1; $stats{fmem}=$2; last; } } print Dumper(%stats); my $num_keys = scalar keys %stats; if ($num_keys != $expected_keys) { print "Whoops! Expected $expected_keys keys, but I got $num_keys!"; } #### %stats = ( 'fmem' => '34048', 'tmem' => '775664', 'users' => '4', 'runproc' => '1', 'load' => '0.00' );