#! perl use strict; use warnings; use Data::Dump; my $sci = qr{ \d \. \d{4} E [ -] \d{3} }x; while () { my @fields = / ^ (\w+) \s+ ($sci) \s+ ($sci) \s+ (\w+) \s+ ($sci) $ /x; dd \@fields; } __DATA__ joe 0.0000E 000 9.0720E-001 d23 9.0208E-001 fred 1.2345E-987 2.3456E 456 qrs76 3.4567E 001 #### 11:17 >perl 1357_SoPW.pl ["joe", "0.0000E 000", "9.0720E-001", "d23", "9.0208E-001"] ["fred", "1.2345E-987", "2.3456E 456", "qrs76", "3.4567E 001"] 11:19 >