Я бы не рекомендовал иметь переменные с именами c Dynami. Хотя это может быть технически осуществимо, это сделает ваш код намного более сложным без очевидной выгоды.
Вместо этого, почему бы не иметь ха sh ссылок на массивы. Исходя из вашего частичного кода, это будет выглядеть так:
my %h;
while(my $line = <FH>) {
chomp($line);
foreach my $i (@depth_uarr) {
if ( $line =~ /$i/ ) {
push @{ $h{$i} }, $line;
}
}
}