in reply to Can this code be optimized further?

why not use only grep?:
my @temp=("a_1","b_1","a_2","a_3","a_4","b_2","a_5","b_3","a_6","b_4") +; my @a_arr = grep { s/^a_(.*)/$1/} @temp; my @b_arr = grep { s/^b_(.*)/$1/} @temp;
PS: using @a and @b should be OK, but $a and $b have special meaning (in 'sort'), so I try to never use 'a' and 'b' as variable names.