DOSプロンプト上で Perl の /()/ を使うと表示が乱れる

[上に] [前に] [次に]
匿名希望 1999/03/03(水) 23:03:42
標準入力から読み込んだデータの中に特定の文字列(仮に "ABC")があったら
標準出力に書きだす目的で以下のコードを grep_modoki.pl に用意しました。

while(<STDIN>)
{
if($_ =~ /(ABC)/)
{
print;
}
}

# 単に文字列マッチなら =~ /ABC/ で足りますが、実際に使用するコードは
# $1 などを使用した複雑な物になっています。ここでは現象を再現した
# 最小限のコードを出しています。

type TEXT.FILE | perl grep_modoki.pl または perl grep_modoki.pl を実行し
データに "ABC" が含まれていない時は問題無いのですが、含まれていると
バイナリファイルを表示(例:type command.com)したかのようにが乱れます。
(良く見るとその中に "Perl EXE", "Error: Runtime exception" という文字がある)
しかも perl grep_modoki.pl で実行した時は "ABC" を含んだ行を入力して Enter を
押した時点で表示が乱れ、更に実行が終了してプロンプトが出てしまうのです。
しかし type TEXT.FILE | perl grep_modoki.pl | more または perl grep_modoki.pl | more
のようにパイプをかませる(またはファイルにリダイレクトする)と表示は乱れません。

同じような現象を体験された方、対応法を御存知の方はいらっしゃいますか。
こちらの環境は
Win95(4.00.950a) + IE4.0(4.72.3110.8)
Perl for Win32 Build 315 - Built 09:33:08 Dec 31 1997 (version 5.003_07)
です。

べる 1999/03/06(土) 00:32:45
[[解決]]
ActivePerl Build 509 (version 5.005_02) と入れ替えたら
希望する動きになりました。

[上に] [前に] [次に]