my $dir = "/Path/to/a/data/directory"; my %hash; my @ls = `ls $dir`; foreach (@ls){ chomp; next if /\~$/ || !$_; my $file = $_; my $info = `cat $dir/$_`; my (@lines) = split(/\n/,$info); for (@lines){ s/^\s+//; next if /^\#/ || !$_; my ($key, @values) = split(/\t/); $hash{$file}{$key} = [@values]; } }