1

STDIN と STDOUT に UTF-8 エンコーディングを適用しています。ただし、以下のコードに渡すファイルに UTF-8 エンコーディングを確実に適用するにはどうすればよいですか (コマンド ラインでテキスト ファイルが渡された場合、<> は STDIN ではなくファイルから読み取ります)。可能。

use open qw(:std :utf8)

while (<>) {
    print;
}
4

1 に答える 1

1

プラグマのドキュメントによると、openすでに必要な動作が得られています。

openプラグマは、すべての I/O のデフォルトの「レイヤー」(「規律」とも呼ばれる) を宣言するインターフェイスの 1 つとして機能します。このプラグマのレキシカル スコープ内にある2 つの引数openreadpipe(別名) および同様の演算子は、宣言されたデフォルトを使用します。qx//MODE で IO レイヤーを指定していない場合、引数が 3 つのオープンでも、このプラグマの影響を受ける可能性があります。

perlopのドキュメンテーションはwhile (<>) { ... }

   unshift(@ARGV, '-') unless @ARGV;
   while ($ARGV = shift) {
     open(ARGV, $ARGV);
     while (<ARGV>) {
       ... # code for each line
     }
   }
于 2010-07-02T21:43:12.767 に答える