in reply to Re^2: better way to convert a string into an array and an hash
in thread better way to convert a string into an array and an hash

Simply because it gives you a free loop. I first saw this idiom about 10 years ago for decoding a cgi params into a hash. Something like

$p =~ s/(.*?)=(.*?)(&|$)/$v=$2;$v=~s/%(..)/chr(hex($1))/ge;$p{$1}=$v/g +e
a substitution within a substiution!

I also thought it might be quicker but after a quick benchmark it seems not.

I suppose I could have used

[/(\d+):(\d+)(?:,|$)(?{$hash{$1}=$2;push(@array, $1);1})/g];
for a free loop without destroying the string but isn't much faster.