in reply to How can one determine context within FETCH?

Just to make something clear, by trying to assess context in your tied hash, you are breaking a Perl idiom: that hash values are only ever scalars. That scalar may be a reference to something else, like an array or hash, but the hash value itself is only ever a scalar.

Consider this:

%fs = ( dir1 => [ 'file1','file2','file3' ], dir2 => [ 'file4','file5','file6' ], ); $contents = $fs{dir1}; $file = $fd{dir1}[0];

I would expect $contents to contain an array-ref, and $file to contain a scalar string. If I wanted an array returned instead, I would write:

@contents = @{$fs{dir1}};
which would still work with your code, because the @ converts the reference to a list, OUTSIDE the tied class. To do otherwise would, in my opinion, just add confusion: this works just like a hash, except when it doesn't...

Clint