in reply to Decoding OLE::Variant
Your code:
for (keys %{$key->{'Drive'}})
$key is just a scalar here, not a reference, so one way to fix it is writing:
for (keys %{$file->{$key}})
or:
for (keys %{$file->{'Drive'}})
The same kind of modification can be applied for the ParentFolder key.
Note: I cannot test the code, so I might be very well wrong.