use strict; use warnings; use constant FIELDS => 26; my $line = ''; while () { s/\r//g; chomp; $line .= $_; my $fields = $line=~ tr/|//; next if FIELDS > $fields; die "Field count too great in line $." if FIELDS < $fields; my @fields = split /\|/, $line; $line = ''; print join ' ', @fields, "\n\n"; } __DATA__ EN|486822|||KKJSKA|L|L00219796|STR, JASON A|JASON|A|STR|||||3710 |NORTH CANTON|OH|44720|||000|0003053964|I||| EN|486823|||YYYYYY|L|L00738657|OCID, SEAN M|SEAN|M|OCID|||||3846 Foxtail Lane |CINCINNATI|OH|45248|||000|0009544289|I||| EN|486824|||KXXXXP|L||DSBS, ANDREW J|ANDREW|J|DSBS|||||28835 STILXXXXXX|FARXXXXX HILLS|MI|48334|||000||I||| #### EN 486822 KKJSKA L L00219796 STR, JASON A JASON A STR 3710 NORTH CANTON OH 44720 000 0003053964 I EN 486823 YYYYYY L L00738657 OCID, SEAN M SEAN M OCID 3846 Foxtail Lane CINCINNATI OH 45248 000 0009544289 I EN 486824 KXXXXP L DSBS, ANDREW J ANDREW J DSBS 28835 STILXXXXXX FARXXXXX HILLS MI 48334 000 I