作者: Bruce.
日時: 2006/4/27(12:45)
Bruce.です。

藤岡さんの更新日記4/26のエントリから

> LaCoocanでPerlのCGIを動かしていて気が付いたのだが、Windows上のPerlの
> ように読み込むテキストファイルの改行文字CR+LF をLFに変換して読み込ん
> でくれないんだ。

perldoc perlio してみると

:crlf
    A layer that implements DOS/Windows like CRLF line endings. On read
    converts pairs of CR,LF to a single "\n" newline character. On write
    converts each "\n" to a CR,LF pair. Note that this layer likes to be
    one of its kind: it silently ignores attempts to be pushed into the
    layer stack more than once.

という記述が見つかります。

あるいは $/ に "\r\n" をセットしてからchompするとか。

use strict;
use warnings;

binmode STDIN;

my $l1 = <>;
my $l2 = $l1;

print unpack('H*', $l1), "\n";
chomp $l1;
print unpack('H*', $l1), "\n";
$/ = "\r\n";
chomp $l2;
print unpack('H*', $l2), "\n";

E:\work\script>echo hello|perl chomp.pl
68656c6c6f0d0a
68656c6c6f0d
68656c6c6f

いじょ。