#!/usr/bin/perl
use strict;
use warnings;
my %meminfo = get_meminfo();
system("free");
my ($total, $free, $buffers, $cached) =
@meminfo{'MemTotal', 'MemFree', 'Buffers', 'Cached'};
my $used = $total - ($free + $buffers + $cached);
my $used_per = sprintf("%.2f", $used * 100 / $total);
warn "total=[$total] free=[$free] buffers=[$buffers] cached=[$cached]\n";
warn "used=[$used]\n";
warn "used_per=[$used_per\%]\n";
sub get_meminfo
{
my %hash;
open my $fh, "<", "/proc/meminfo";
while (<$fh>) {
chomp;
next unless $_;
next if $_ eq "";
my ($key, $val) = split /:/;
my $size = 0;
if ($val =~ /(\d+)/) {
$size = $1;
}
$hash{$key} = $size;
}
close $fh;
return %hash;
}