1

readdir(DIR)はファイルを読むために使用しますが、私が使用するとき

$file = readdir(DIR);
print $file;
print "\n";
sleep(2);

ファイルを1回印刷します。

しかし、私が使用するとき

print readdir(DIR);
print "\n";
sleep(2);

多くのファイルが飛び出します

どうしたの?

ありがとう

4

2 に答える 2

2

readdirファイルを読みません。ディレクトリをスキャンして、次のディレクトリ リストを探します。

ここで確認できperldocます: readdir

の宣言で 1 つのファイルのみを出力した理由$fileは、それがスカラー値であるためです。ディレクトリハンドルから一度だけ読み取り、リストを返します。

より一般的には、ディレクトリ全体から読み取りたい場合は、それをリストに割り当てreaddirます。これにより、2 番目の例ですべてのディレクトリ リストが出力されます。

于 2013-03-11T03:23:40.053 に答える
0

readdir returns the next file when evaluated in scalar context (or undef after the last one has been read).

my $file = readdir($fh);

The scalar assign operator evaluates its RHS operand in scalar context.


readdir returns the remaining files when evaluated in list context.

my @files = readdir($fh);

print evaluate its argument list in list context.

于 2013-03-11T05:39:05.233 に答える