Вам нужно использовать хеш, если вы хотите, чтобы хеш-код выводился.
Нет необходимости разделять три раза и использовать постскрипты, просто разделите один раз и назначьте все переменные.Также не нужно инициализировать скаляр как пустой хеш, Perl позаботится об этом за вас.
Я переименовал переменные для повышения читабельности.
my $string = "12 A P1
23 B P5
24 C P2
15 D P1
06 E P5 ";
my $hash;
my @lines = split(/\n/, $string);
foreach (@lines)
{
my ($value, $key2, $key) = split;
$hash->{$key}{$key2} = $value;
}
print Dumper($hash );
Помните, что если у вас естьНесколько значений с одинаковыми ключами, они будут перезаписывать друг друга.В этом случае вам нужно вместо этого поместить значения в массив:
push @{$hash->{$key}{$key2}}, $value;