elsif ( /^ \s+ ( \S{13} \s+ \S+ \s+ \S.* )/x ) { my @fields = unpack "a21 a9 a9 a2 a13 a8 a9 a9 a4 a5 a6", $1; # ... } #### elsif ( /^ \s+ ( \S{13} \s+ \S+ \s+ \S.* )/x ) { my @field = qw( PIIN FSCM N/A U/I UNIT PRICE AWD DT QTY OPT DT FOB REP TYPE ); my %value; @value{ @field } = unpack "a21 a9 a9 a2 a13 a8 a9 a9 a4 a5 a6", $1; printf " %-10s = %s\n", $_, $value{ $_ } for @field; print "\n"; }