My take...
while ( <DATA> ) {
chomp;
my @fields1 = split ' ', $_, 9;
my @fields2 = split / /, pop @fields1;
if ( @fields2 > 10 ) {
my @filename = splice @fields2, 0, @fields2 - 9;
unshift @fields2, join ' ', @filename;
}
push @fields1, @fields2;
printf "%3s %3s %2d %8s %4s %s %-14s %4d %-26s %s %s %s %s %-10s %
+3s %s %s %s\n", @fields1;
}
__DATA__
Mon Oct 1 17:09:27 2001 0 127.0.0.1 22 file with spaces in it.zip a _
+ o r tmbranno ftp 0 * c
Mon Oct 1 17:09:23 2001 0 127.0.0.1 2611 1774034 a _ o r tmbranno ftp
+ 0 * c
Mon Oct 1 17:09:27 2001 0 127.0.0.1 22 1774034 a _ o r tmbranno ftp 0
+ * c
Mon Oct 1 17:09:31 2001 0 127.0.0.1 7276 p1774034_11i_zhs.zip a _ o r
+ tmbranno ftp 0 * c
Output:
Mon Oct 1 17:09:27 2001 0 127.0.0.1 22 file with spaces in it.
+zip a _ o r tmbranno ftp 0 * c
Mon Oct 1 17:09:23 2001 0 127.0.0.1 2611 1774034
+ a _ o r tmbranno ftp 0 * c
Mon Oct 1 17:09:27 2001 0 127.0.0.1 22 1774034
+ a _ o r tmbranno ftp 0 * c
Mon Oct 1 17:09:31 2001 0 127.0.0.1 7276 p1774034_11i_zhs.zip
+ a _ o r tmbranno ftp 0 * c