tie %hash, 'MyHashClass', @files; my @data = $hash{$key}; # convienent! #### package MyHashClass; use strict; use Carp; use Tie::Hash; @MyHashClass::ISA = qw/ Tie::StdHash /; sub FETCH { my ($self, $key) = @_; my @ret = (); foreach my $filename ( @files ) { open( F, $filename ) or croak "$!"; while( ) { if ( matches ) { push @ret, $_; } } close F; } return @ret; } 1;