在
this question中查看行为时,我惊讶地看到perl
lstat()
s每个路径都匹配一个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",...}) = 0
我在我的Linux系统上看到了与glob(模式)和< pattern>以及更高版本的perl相同的行为.
我的期望是,globbing只是opendir / readdir,并且它不需要检查它正在搜索的实际路径名.
这个lstat的目的是什么?它会影响glob()的返回吗?
解决方法
这个奇怪的行为已经是
noticed before on PerlMonks.事实证明,glob调用lstat来支持它的
GLOB_MARK
标志,其结果是:
Each pathname that is a directory that matches the pattern has a slash appended.
要确定目录条目是否引用了子目录,您需要对其进行统计.即使没有给出标志,这显然已经完成.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。