The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
###############################################################################
#
#   Sub Name:       linux_proc_cpuinfo
#
#   Description:    Read the /proc/cpuinfo on a Linux server and return a
#                   STRUCT with the information.
#
#   Arguments:      None.
#
#   Returns:        hashref
#
###############################################################################
sub linux_proc_sysinfo
{
    use strict;

    my (%cpuinfo, $line, $key, $value);
    local *F;

    open(F, '/proc/cpuinfo') or
        return RPC::XML::fault->new(501, "Cannot open /proc/cpuinfo: $!");

    while (defined($line = <F>))
    {
        chomp $line;
        next if ($line =~ /^\s*$/);

        ($key, $value) = split(/\s+:\s+/, $line, 2);
        $key =~ s/ /_/g;
        $cpuinfo{$key} = ($key eq 'flags') ? [ split(/ /, $value) ] : $value;
    }
    close(F);

    \%cpuinfo;
}