for (grep /^default_option_/, keys %def) { my (undef, $option) = split /_/, $_, 2; $s{$option} = $def{$_}; }
... changes to a somewhat dense form of ...
for ( grep /^default_option_/, keys %def ) { $s{ (split /_/, $_, 2)[-1] } = $def{ $_ }; }
... put other way (by way of moritz's explicit hint) ...
%s = map { (split /_/, $_, 2)[-1] => $def{ $_ } } # Useless use of grep. grep /^default_option_/, keys %def ;
... which begs to go to the original version despite OP's request...
%s = map { m/^ default_ (option_.+) $/x ? ( $1 => $def{ $_ } ) : () } keys %def ;
I, myself, would not have bothered with any of map-grep or for-grep versions shown thus far. In case of for-loop, I would be prone to write "next if".
In reply to Re^2: get solution as short as possible
by Anonymous Monk
in thread get solution as short as possible
by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |