in reply to Re^3: Can this code be optimized further?
in thread Can this code be optimized further?

And if you had 10 arrays you'd want to keep that hash up to date? 20? 30?
The effort is linear with declaring them in the first place: one entry in the hash for each new array.

And if your names are simply consecutive letters, the additional effort is constant: just change the ending character in the slice below.

my @temp=qw(a_1 b_1 a_2 a_3 a_4 e_2 a_5 b_3 a_6 b_4); my %router; @router{'a'..'e'} = \(my (@a, @b, @c, @d, @e)); my $keys = join '', keys %router; foreach my $value (@temp) { push @{$router{$1}}, $2 if $value =~ /([$keys])_(.*)/; } print "@a <==> @b, @e\n";

Caution: Contents may have been coded under pressure.