while(<@thisArray>)
誰かがこれが正確に何をするか知っていますか?コードは通常次のようなものであるため、私たちはそれについて議論していました。
while(<STDIN>)
while(<@thisArray>)
誰かがこれが正確に何をするか知っていますか?コードは通常次のようなものであるため、私たちはそれについて議論していました。
while(<STDIN>)
のパターンに一致するファイル名を反復処理します@thisArray
。
に変換されるperl -MO=Deparse -e '1 while(<@thisArray>)'
ショーの結果:<>
glob
use File::Glob ();
'???' while defined($_ = glob(join($", @thisArray)));
glob
マニュアルから:
スカラー コンテキストでは、glob はそのようなファイル名展開を繰り返し処理し、リストが使い果たされると undef を返します。
のデフォルト値$"
はスペースです。したがって、 の複数のパターン@thisArray
が 1 つの文字列に結合され、内部のスペースで分割されますglob
。
glob はその引数を空白で分割し、各セグメントを個別のパターンとして扱うことに注意してください。
<@thisArray>
として動作しglob(@thisArray)
ます。したがって、配列のメンバーに一致するすべてのファイルのリストが表示されます。
配列の要素がファイルと一致しない場合は、要素自体が返されます。
perlopを参照してください:
山かっこ内にあるものがファイルハンドルでも、ファイルハンドル名、typeglob、またはtypeglob参照を含む単純なスカラー変数でもない場合、グロブされるファイル名パターンとして解釈されます。