my @fields = qw/ name sex age salary sign /; my $unpack_tpl = "A20 A1 A3 A8 A12"; my %data = (); @data{ @fields } = unpack $unpack_tpl, $string; # { name => "Ted", sex => "M" ... }