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>


Reply via email to