2011-09-21 7 views
8

>:scalarの意味は? 「:THING>」構文はTHINGで指定された層を使用するためのPerlのIOシステムに指示します

答えて

9

特に..前にこの種のコードを見ることはありません。 「層」のためのPerlIO documentationを見てください。一般的なレイヤーは「未加工」と「utf8」です。

この場合、$ stdoutをメモリ内ファイルとして使用することができます。これは、STDOUTに送信されるものを含むようになります。より一般的には、構文を使用するとメモリ内のファイルを開き、ファイルハンドルをファイルに通常書き込む他の関数に送ることができるので、出力を収集することができます。

あなたはまた、スカラーへの参照である「ファイル」開くことで同じ結果を得ることができます:あなたは「を使用する必要はありませんが、それは、PerlIO::scalarによってはPerlIOによって提供され、実装されています

open my $fh, ">:scalar", \$scalar or die; 
open my $fh, ">", \$scalar or die; 

を'機能にアクセスするためのモジュール。

+0

'>:スカラー 'とはどういう意味ですか? – asker

+0

私は最初にそれを追加しました。 – Alex

3

Perlはlayered IO systemを使用します。チェーンの一番下には、メディアへのアクセスを扱うレイヤーがあります。 scalarは、ファイルではなくスカラーへの読み書きを処理するIOシステム層です。スカラーハンドル用

open(my $fh, '>:scalar', \$scalar) 

を言うことはOSハンドル用

open(my $fh, '>:unix', $file_name) 

を言うのと同じです。 Perlは既にそれがスカラーハンドルであり、OSハンドルではないことを既に知っているので、完全に冗長です。

関連する問題