in reply to Iterating through referenced arrays wihthin a hash

The whole reference thing is a red heiring. Your question (as I understand it) pretty much boils down to "How do I split a list into pairs?"
my @vals = map { @$_ } @{ $hash{$key} }; my @pairs; while (@vals) { push @pairs, [ splice(@vals, 0, 2) ]; } $hash{$key} = \@pairs;