if (/^(\d+)\s+ # $1 = CardNo (\d\d\/\d\d)\/ # $2 = MMDD (\d+)\s+ # $3 = YY M=(\d+)\s+(\d+)\s+ # $4 = TotalNo $5 = StormNo SNBR=\s*(\d+)\s+ # $6 = SNBR (.+)\s+ # $7 = Name XING=(\d+)\s+ # $8 = XING SSS=(\d+) # $9 = SSS /x) { # matched the header line my ($CardNo, $MMDD, $YY, $TotalNo, $StormNo, $SNBR, $Name, $XING, $SSS) = ($1, $2, $3, $4, $5, $6, $7, $8, $9); $Name =~ s/NOT NAMED\s+/NONAME/; # replace and strip trailing spaces print "$MMDD $TotalNo $Name$StormNo-$YY $XING $SSS $CardNo\n"; next; } if (# regexp for data line.....) ........ }