この質問の動作を調べたところ、perllstat()
が glob パターンに一致するすべてのパスであることに驚きました。
$ mkdir dir
$ touch dir/{foo,bar,baz}.txt
$ strace -e trace=lstat perl -E 'say $^V; <dir/b*>'
v5.10.1
lstat("dir/baz.txt", {st_mode=S_IFREG|0664, st_size=0, ...}) = 0
lstat("dir/bar.txt", {st_mode=S_IFREG|0664, st_size=0, ...}) = 0
Linux システムでglob(pattern)
と を使用<pattern>
し、それ以降のバージョンの perl を使用しても同じ動作が見られます。
私の予想では、グロビングはフードの下で単純に opendir/readdir を実行し、検索している実際のパス名を検査する必要はありませんでした。
これの目的は何lstat
ですか?glob() の戻り値に影響しますか?