#! perl -slw use strict; use Data::Dump qw[ pp ]; my @keys = split ' ', scalar ; ; ## discard ----- my @data = map{ my %hash; @hash{ @keys } = split ' '; \%hash; } ; pp \@data; __END__ Name UPP Age Career Terms -------- ------ --- ---------- ----- Rejnaldi 765987 38 Citizen 6 Lisandra 6779AA 34 Noble 4 Kuran 899786 42 Marine 8 #### C:\test>junk [ { Age => 38, Career => "Citizen", Name => "Rejnaldi", Terms => 6, UPP => 765987 }, { Age => 34, Career => "Noble", Name => "Lisandra", Terms => 4, UPP => "6779AA" }, { Age => 42, Career => "Marine", Name => "Kuran", Terms => 8, UPP => 899786 }, ] #### #! perl -slw use strict; use Data::Dump qw[ pp ]; my @keys = unpack 'A8xA6xA3xA10xA5', scalar ; ; ## discard my @data = map{ my %hash; @hash{ @keys } = unpack 'A8xA6xA3xA10xA5', $_; \%hash; } ; pp \@data; __END__ Name UPP Age Career Terms -------- ------ --- ---------- ----- Rejnaldi 765987 38 Citizen 6 Lisandra 6779AA 34 Noble 4 Kuran 899786 42 Marine 8 #### #! perl -slw use strict; use Data::Dump qw[ pp ]; my @keys = scalar( ) =~ m[(\S+\s*)\s]g; my $templ = join 'x', map{ 'A' . length() } @keys; @keys = map{ $_ =~ s[\s+$][]; $_ } @keys; ; ## discard my @data = map{ my %hash; @hash{ @keys } = unpack $templ, $_; \%hash; } ; pp \@data; __END__