8
while(<@thisArray>)

誰かがこれが正確に何をするか知っていますか?コードは通常次のようなものであるため、私たちはそれについて議論していました。

while(<STDIN>)
4

3 に答える 3

10

のパターンに一致するファイル名を反復処理します@thisArray

に変換されるperl -MO=Deparse -e '1 while(<@thisArray>)'ショーの結果:<>glob

use File::Glob ();
'???' while defined($_ = glob(join($", @thisArray)));

globマニュアルから:

スカラー コンテキストでは、glob はそのようなファイル名展開を繰り返し処理し、リストが使い果たされると undef を返します。

のデフォルト値$"はスペースです。したがって、 の複数のパターン@thisArrayが 1 つの文字列に結合され、内部のスペースで分割されますglob

glob はその引数を空白で分割し、各セグメントを個別のパターンとして扱うことに注意してください。

于 2012-08-06T18:14:39.067 に答える
6

<@thisArray>として動作しglob(@thisArray)ます。したがって、配列のメンバーに一致するすべてのファイルのリストが表示されます。

配列の要素がファイルと一致しない場合は、要素自体が返されます。

于 2012-08-06T18:14:04.387 に答える
5

perlopを参照してください:

山かっこ内にあるものがファイルハンドルでも、ファイルハンドル名、typeglob、またはtypeglob参照を含む単純なスカラー変数でもない場合、グロブされるファイル名パターンとして解釈されます。

于 2012-08-06T18:19:11.177 に答える