As you know what the first 2 fields are and what the last 4 fields are everything in between would be the name. So you could re-join the fields in the middle, possibly distorting the white space.
use strict; use warnings; <DATA>; while(<DATA>){ chomp; my @line = split /\s+/; my $from = join( " ", splice( @line, 2, $#line-5) ); my ($reqid, $dest, $date, $time, $pages, $rcv) = @line; print join "|", ($reqid, $dest, $from, $date, $time, $pages, $rcv); print "\n"; } __DATA__ REQID DEST FROM DATE TIME nPa +ges RCV 138454 mail_room Marco's Pizza 12/26 21:52 1 rcv 138446 custsvc 973 618 0577 12/26 18:44 1 rcv 138445 county2 spam 12/26 18:41 3 rcv 138444 custsvc spam 12/26 18:30 1 rcv 138439 county2 7182737253 12/26 17:54 2 rcv 138438 county2 Acme Products, Inc. 12/26 17:52 1 rcv
In reply to Re: How to split line with varying number of tokens?
by hdb
in thread How to split line with varying number of tokens?
by zBernie
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |