ググると二回ループを回す例が多いですが、一回で出来ます。
string_to_hash.pl
use Data::Dumper;
# この例では「,」がレコードの区切り、「:」がキーと値の区切り
my $string = "1:abc,2:def,3:ghi,4:jkl";
my %hash = split(/[:,]/, $string)
print Dumper \%hash;
実行結果
$VAR1 = {
'4' => 'jkl',
'1' => 'abc',
'3' => 'ghi',
'2' => 'def'
};
ハッシュなので順番は保障されません。