$ cat foo.pl use strict; use warnings; use Data::Dump 'dump'; my %h; @h{'A', 'B', 'C'} = @{foo()}[0,1,2]; print dump(\%h); sub foo { [3, 2, 1]; } $ perl foo.pl { A => 3, B => 2, C => 1 }