well this looked fun so i gave it a shot:
# using your output in var $status
my (%drives, $loaded);
# remove last line from $status and assign to $loaded
# of course, this assumes nice, predictable output, since
# it's simply looking for the word Drive:
$status =~ s/\n(Drive:.+)$// && ($loaded = $1);
# create your hash with the remainder of $status
%drives = split( m[\n|\s+], $status, 12 );
i think your way is clearer, but it was an interesting diversion. at least now if i see some better examples, i'll have a good idea of what they're doing.
i tried, but i couldn't find any functions with side effects that could be put to good use here.
~Particle