The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl -w

use strict;

use Parse::DMIDecode qw();
my $decoder = new Parse::DMIDecode;
$decoder->probe;

for my $handle ($decoder->get_handles) {
    printf("Handle %s of type %s is %s bytes long (minus strings).\n".
           "  > Contians the following keyword data entries:\n",
            $handle->handle,
            $handle->dmitype,
            $handle->bytes
        );

    for my $keyword ($handle->keywords) {
        my $value = $handle->keyword($keyword);
        printf("Keyword \"%s\" => \"%s\"\n",
                $keyword,
                (ref($value) eq 'ARRAY' ?
                    join(', ',@{$value}) : ($value||''))
            );
    }
}