PerlファイルI/Oでのopen()
関数の使用方法を理解するにはどうすればよいですか?このopen()のPerlでのドットの意味は?
open(FHANDLE, ">" . $file)
私は構文in the docsのこのタイプを見つけることを試みたが、見つかりませんでした。ご注意ください。 ">"の後にドット(ドット)を挿入します。
私が理解できないのは、ドットの使用、私が知っている残りの部分です。
PerlファイルI/Oでのopen()
関数の使用方法を理解するにはどうすればよいですか?このopen()のPerlでのドットの意味は?
open(FHANDLE, ">" . $file)
私は構文in the docsのこのタイプを見つけることを試みたが、見つかりませんでした。ご注意ください。 ">"の後にドット(ドット)を挿入します。
私が理解できないのは、ドットの使用、私が知っている残りの部分です。
これは古い2つの引数形式のopen
の例です(3つの引数open
が利用可能になったので避けてください)。 Perlでは、.
が追加演算子です。 2つの文字列を1つの文字列に結合します。
あなたが投稿したコードの行はopen(FHANDLE, ">$file")
に相当し、>
と$file
を組み合わせる別の方法を使用しています。
あなたがリンクしているドキュメントに示されているように、今日はもっと良い方法はopen(my $fhandle, '>', $file)
です。
これは2つの引数open
です。 .
のドットは、Perlの文字列連結演算子です。 open
が2つの引数で呼び出された場合、2番目の引数にはモードとパスの両方が含まれます。
あなたの場合、$file
という名前のファイルが書き込まれます。
ただし、いくつかの理由でこれを行うべきではありません。グローバルなGLOBファイルハンドルの代わりに、引数が3つのオープンなファイルハンドルとレキシカルなファイルハンドルを使用する方が一般的です。
字句ファイルハンドルは、範囲外になるとすぐにPerlが暗黙的にハンドラを閉じていることを確認します。モードとファイル名に異なるargを使用することはセキュリティ上の問題です。そうしないと悪意のあるユーザーがモード変更をファイル名に混入させる可能性があるからです。今字句ファイルハンドルとモードの分離とファイル名に加えて、
open my $fh, '>', $file or die $!;
、我々はまた、常に良い考えである、このコードでエラーをチェック。
https://perldoc.perl.org/perlop.html#Additive-Operators –