ОК, перенесено из комментариев. Я положил его туда, пока вопрос был закрыт.
Используя регулярное выражение подстановки, мы перебираем строку, извлекая ключ и значения. Строка значения разделяется на пробел и сохраняется в анонимном массиве в %hash
с соответствующим ключом.
Код:
use strict;
use warnings;
use v5.10; # to enable say
$_="xxx| aaa yyy| bbb ccc zzz| ddd eee";
my %hash;
while (s/(\w+)\|([ \w]+\b(?!\|))//) {
$hash{$1} = [ split ' ',$2 ];
}
for my $key (keys %hash) {
for my $val (@{$hash{$key}}) {
say "$key | $val";
}
}
Выход:
xxx | aaa
yyy | bbb
yyy | ccc
zzz | ddd
zzz | eee