2011-07-22 7 views
2
chomp($input = <>); 

にはどうすれば$inputはCtrl +Dであるかどうかを知っているのですか?私のPerlコードはCtrl + Dをキャッチできますか?

+0

:あなたは^Dを介して、押されたことを伝えることができ

chomp($input = <>); 

:のために簡単に、入れ

ユーザは最後に到達したファイル内のパイピングとは対照的にctrl-Dを送信しましたか? – Sysyphus

答えて

2

あなたが<>からundefを取得したときにあなたがeofに達したことは知っていますが、あなたのケースではchompはそれを誇張しています。次のように

EOFまで読むために通常のPerlのイディオムは次のとおりです。

while(<>) { 
    chomp; 
    # do whatever you want with the line in $_ 
    # ... 
} 
2

私はあなたの質問ctrl-dに推測UNIX上として、EOFに等しいのですか?

while (<$fh>) { 
    # use $_ here 
} 

それとも、あなたはPerlが舞台裏で何を綴ることが明示さを主張する場合:

while (defined($_ = <$fh>)) { 
    # use $_ here 
} 

またはいくつかの他の変数を使用します。

while (defined(my $in = <$fh>)) { 
    # use $in here 
} 
0
$fhでいくつかのファイルハンドル付き

あなたが尋ねた質問に誰もが多くを追加しているようです。入力が終了したか、どのようにすることを知っていますとき、どのようにあなたが知っていると同じように

print "EOF reached\n" if not defined $input; 
関連する問題