Просто чтобы вы могли видеть, что есть линейные способы сделать это:
my %hash
= map { $_->[0] => [ split /\s+/, $_->[1] ] }
map { chomp; [ split /\s*=\s*/, $_, 2 ] }
<DATA>
;
__DATA__
Stringa = Stringx Stringz
Stringb = Stringy
Stringc = Stringw Stringx Stringu
Черт возьми, пока вы это делаете, если вы добавите File::Slurp
, вы можете сделать это:
use File::Slurp qw<read_file>;
my %hash
= map { $_->[0] => [ split /\s+/, $_->[1] ] }
map { chomp; [ split /\s*=\s*/, $_, 2 ] }
# now you can have #-comments in your file
grep { !m/^\s*#/ }
read_file( $my_config_path )
;