in reply to parse a line with varied number of fields
As long as you have a constant number of fields and the only field that can contain spaces is your filename one, the problem can be solved using the third argument to split combined with reverse.
knoppix@Microknoppix:~$ perl -Mstrict -Mwarnings -E ' > my @lines = ( > q{1 2 3 4 5 6 7 8 filename 10 11 12 13 14 15 16 17 18}, > q{1 2 3 4 5 6 7 8 file name 10 11 12 13 14 15 16 17 18}, > q{1 2 3 4 5 6 7 8 new file name 10 11 12 13 14 15 16 17 18}, > ); > > foreach my $line ( @lines ) > { > my @flds = split m{\s+}, $line, 9; > @flds = split m{\s+}, reverse( $flds[ -1 ] ), 10; > my $filename = reverse $flds[ -1 ]; > say qq{>$filename<}; > }' >filename< >file name< >new file name< knoppix@Microknoppix:~$
I hope this is helpful.
Cheers,
JohnGG
|
---|
Replies are listed 'Best First'. | |
---|---|
Re^2: parse a line with varied number of fields
by vt220 (Scribe) on Jul 03, 2012 at 19:03 UTC | |
by johngg (Canon) on Jul 03, 2012 at 22:30 UTC | |
Re^2: parse a line with varied number of fields
by raggmopp (Novice) on Jul 03, 2012 at 13:19 UTC |
In Section
Seekers of Perl Wisdom