* John Douglas Porter <[EMAIL PROTECTED]> [2003-02-07 14:50]:
> Yes, but his example data was text in a here document.

Then add a note about the caveat.

>   split m,$/, $x, -1;

In bizarre cases, $/ might contain regex metacharacters.
Don't forget the \Q.

> > And popping the last field is dangerous - you don't know if
> > the file ends with a newline.
> 
> You DO know it does, if the text came from a here document.

Once again; dito note caveat.

> Well, I didn't address this part of the problem, but others
> have, giving
> 
>   join $/, @lines, '';
> 
> which is sufficient.  If you're paranoid, you can do

Not if the last line did not end with a record separator.
His example data did, but other data might not.

>   join "\n", @lines, $tail;

Unfortunately, that won't work either - regardless of the
value of $tail - even undef -, you are joining an extra
element onto the string.

If you really don't want that last potentially empty
element, you'll have to do something like:

my $final_recsep = $lines[-1] eq '';
pop @lines if $final_recsep;

# ...

join $/, @lines, $final_recsep ? '' : ();

-- 
Regards,
Aristotle

Reply via email to