foreach (@filenames) { my $p = \\%files; $p = \(${$p}->{$_}) foreach split /[-_.]/; ${$p} = 1; }