for (grep /^default_option_/, keys %def) { my (undef, $option) = split /_/, $_, 2; $s{$option} = $def{$_}; } #### for ( grep /^default_option_/, keys %def ) { $s{ (split /_/, $_, 2)[-1] } = $def{ $_ }; } #### %s = map { (split /_/, $_, 2)[-1] => $def{ $_ } } # Useless use of grep. grep /^default_option_/, keys %def ; #### %s = map { m/^ default_ (option_.+) $/x ? ( $1 => $def{ $_ } ) : () } keys %def ;