On Oct 20, 2006, at 11:54 AM, Chris Share wrote:
In the output of the following code there's a carriage return
between the $name variable and the "!". Where is this coming from?
Doesn't the chomp get rid of this?
#!/usr/local/bin/perl
$| = 1;
use strict;
use warnings;
use CGI qw(:standard);
print "What is your name? ";
my $name = <STDIN>;
chomp $name;
print header;
print start_html(-title=>"Hello $name!\n", -bgcolor=>"#cccccc", -
text=>"#999999");
print "<h2>Hello, $name!</h2>\n";
print end_html;
Here's the output:
What is your name? Chris
Content-Type: text/html; charset=ISO-8859-1
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US"
xml:lang="en-US">
<head>
<title>Hello Chris
!
Looks like CGI.pm puts STDIN in binmode on Windows:
$needs_binmode = $OS=~/^(WINDOWS|DOS|OS2|MSWin|CYGWIN)/;
# ...
if ($needs_binmode) {
$CGI::DefaultClass->binmode(\*main::STDOUT);
$CGI::DefaultClass->binmode(\*main::STDIN);
$CGI::DefaultClass->binmode(\*main::STDERR);
}
If that is correct the CRLF -> LF translation of the I/O layer is
disabled and chomp does not remove CR (because $/ is "\n" by
default). Once you see why it is working that way I guess you can
change your code accordingly.
-- fxn
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>