in reply to from array to hash with grep

At first sight it looked as if a minor modification was necessary, but grep has run through the array and returned a list before the lhs can get at each match variable, preventing them being assigned to keys of %inp (normally you'd use $1 not $_).

map was probably invented for this kind of reason. But the example doesn't really demand it that strongly when the lhs is a hash - 'for' still seems adequate and simple to me:

#!/usr/bin/perl use strict ; use warnings ; my @inp = ("abc_A_bla", "abc_B_bla", "abc_C_bla") ; my %inp ; $inp{ $1 } = /\w{3}_(\w)/ || next for @inp; foreach ( keys %inp ) { print "Found $_\n" ; }

-M

Free your mind