2017-09-26 3 views
5

PerlファイルI/Oでのopen()関数の使用方法を理解するにはどうすればよいですか?このopen()のPerlでのドットの意味は?

open(FHANDLE, ">" . $file) 

私は構文in the docsのこのタイプを見つけることを試みたが、見つかりませんでした。ご注意ください。 ">"の後にドット(ドット)を挿入します。

私が理解できないのは、ドットの使用、私が知っている残りの部分です。

+0

https://perldoc.perl.org/perlop.html#Additive-Operators –

答えて

12

これは古い2つの引数形式のopenの例です(3つの引数openが利用可能になったので避けてください)。 Perlでは、.が追加演算子です。 2つの文字列を1つの文字列に結合します。

あなたが投稿したコードの行はopen(FHANDLE, ">$file")に相当し、>$fileを組み合わせる別の方法を使用しています。

あなたがリンクしているドキュメントに示されているように、今日はもっと良い方法はopen(my $fhandle, '>', $file)です。

8

これは2つの引数openです。 .のドットは、Perlの文字列連結演算子です。 openが2つの引数で呼び出された場合、2番目の引数にはモードとパスの両方が含まれます。

あなたの場合、$fileという名前のファイルが書き込まれます。

ただし、いくつかの理由でこれを行うべきではありません。グローバルなGLOBファイルハンドルの代わりに、引数が3つのオープンなファイルハンドルとレキシカルなファイルハンドルを使用する方が一般的です。

字句ファイルハンドルは、範囲外になるとすぐにPerlが暗黙的にハンドラを閉じていることを確認します。モードとファイル名に異なるargを使用することはセキュリティ上の問題です。そうしないと悪意のあるユーザーがモード変更をファイル名に混入させる可能性があるからです。今字句ファイルハンドルとモードの分離とファイル名に加えて、

open my $fh, '>', $file or die $!; 

、我々はまた、常に良い考えである、このコードでエラーをチェック。

関連する問題