#!/usr/bin/perl use Modern::Perl; 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<}; } foreach my $line ( @lines ) { my @flds = split(' ', $line); my $filename = join(' ', @flds[8 .. $#flds - 9]); say qq{<$filename>}; }