On Jun 6, 2006, at 14:16, John W. Krahn wrote:
Mr. Shawn H. Corey wrote:
$output_file =~ s/\r//g;
# chomp only removes linefeed characters \n
# BTW, there is no such thing as a newline;
# it is either a linefeed: \n ASCII LF 0x0A
# or a carriage return: \r ASCII CR 0x0D
"\n" is inherited from the C programming language and is the
newline escape
sequence. On Unix and Unix-like systems the newline is equivalent
to the
ASCII line feed character but on other systems it could be one or more
different characters.
To be more precise, "\n" in Perl is eq "\012" everywhere except in
Mac OS pre-X, where it is eq "\015". In CRLF platforms like Win32
"\n" is transparently converted to CRLF on writing and back on
reading by PerlIO in text mode. Thus, in a regular line-oriented
script like
while (my $line = <FH>) {
# work with $line
}
$line ends with "\n" but does not contain a pair CRLF (assuming
native conventions in the input). On the other direction, the string
"foo\n" has length 4 in all systems. When you print that string into
a file in text mode on Windows the bytes on disk have an extra
"\015", but that's transparent to the programmer. That's the point of
using "\n" as logical/portable newline in Perl.
I have written an article about newlines in Perl not yet published.
All those fine details are explained there.
-- fxn
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>