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.