可以从perl的源码中得到答案.
主要是如下几个文件.
Glob.pm
Glob.xs
bsd_glob.c
bsd_glob.h
2009/6/21 vincent <pcwl.vincent@gmail.com>
《perl24小时》第十章第六节,请自行找书阅读,
下面是使用g l o b与opendir/readdir/closedir 之间的某些差别:
* g l o b只能返回有限数量的文件。对于较大的目录, g l o b可能会报告"太多的文件",但是
却不能返回任何文件。这是因为g l o b当前是使用外部程序即s h e l l来实现的,它只能返回
有限数量的文件。o p e n d i r / r e a d d i r / c l o s e d i r函数则不存在这个问题。
* g l o b返回模式中使用的路径名,而o p e n d i r / r e a d d i r / c l o s e d i r函数
则不能。例如, g l o b
('/ u s r / i n c l u d e) / *返 . 回h '' / u s r / i n c l 作u d为 e任 ' 何匹
配项的组成部分,而r e a d d i r则不能返
回它。
* g l o b的运行速度通常比o p e n d i r / r e a d d i r / c l o s e d i r慢。同样,它之
所以运行速度比较慢,是
因为P e r l必须启动一个外部程序来为它进行g l o b b i n g,而该程序将在对文件名排序后再
返回这些文件名。
那么你究竟应该使用哪一个函数呢?这完全取决于你。不过,使用o p e n d i r / r e a d d i r /
c l o s e d i r函数往往是个复杂得多的解决方案,在本书中的大多数程序例子中,我们都使用这个
函数。
> 2009/6/20 Don Qin <icefi...@gmail.com>
On 6月20日, 下午10时47分, Don Qin <icefi...@gmail.com> wrote:
> 可以明确的是glob没有调用外部shell. 至于效率问题 我想和处理的具体问题有关终究它们两个的功能不同不好直接比较.
> 在*nix平台它们在读取文件夹这一步都是调用的c中readdir.
> 在其它平台上的它们2个所采用的方式可能也是相同的. 不知道为什么你会说glob的移植性比readdir差。 如果你有明确的证据请你只出来. 万分感谢.
> 也不清楚你认为glob会受文件数量影响的原因。 能否给出证据。 谢谢
>
>
>
>
> > 请问, 这种说法有根据么?
>
> > 2009/6/20 vincent <pcwl.vinc...@gmail.com>
>
> > 对,glob的<>操作本质上是调用外部shell,所以效率上是不如readdir的,而且其最大缺点就是受文件数量限制和影响移植~~~,这也是我
> >> 工作中碰到的问题~~ 所以就一般都不用它了~
>
> >> On 6月19日, 下午9时25分, Michael Zeng <galaxy2...@gmail.com> wrote:
> >> > 原来readdir 比glob还有这个好处
>
> >> > 我从来都是用glob的
>
> >> > 不过benchmark 表明 opendir/readdir 比glob效率高
>
> >> > 2009/6/19 xjdengz <xjde...@gmail.com>
>
> >> > > 2009/6/19 vincent <pcwl.vinc...@gmail.com>
>
> >> > > > 20090611腾讯四面面经
> >> > > > 1月11号面了腾讯,今天得到结果是fail,呵呵现在把面经写出来给大家分享一下。免得大家跟我一样变成炮灰~。
>
> >> 跟论坛里面robin订好是下午两点的时间,由于天气比较恶劣,到东站迟了十来分钟,错过了12点去深圳的一班,只能坐12:20一班的车,到深圳
>
> >> > > > 这个岗位,第二是没有注意面试中的小细节,导致面试官产生偏见。第三就是简历做得太无针对性。第四可能就是传说中的人品了~~ ⊙﹏⊙b汗。
> >> > > > 去面试的朋友有帮助。
> >> > > > 最后介绍一下我自己,广州五山某理工学习毕业,三年的电信网管开发经验,精通perl、unix/linux
> >> c,perl主要是文本分析,系统监控及
> >> > > > 管理,网络通信,数据库操作。c的话主
> >> > > 五山某理工:)
>
> >> 要是接口通讯开发,数据库通讯,谙熟多进程,多线程,信号,精灵进程,终端/伪终端等编程,mysql从应用、调优、管理、原理谙熟于心娴熟于手,呵呵
> >> > > > ~~其余啥都懂一点,包
>
> >> > > > 括泡妞、蒲夜场,跑东莞...,现在想换新工作,有介绍的朋友请不吝帮衬~~~,工资最好不要低于7.5K O(∩_∩)O~~~~
>
> >> > --
> >> > Yours Sincerely
> >> > Zeng Hong
--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛"PerlChina Mongers 讨论组"论坛。
要在此论坛发帖,请发电子邮件到 perlchina@googlegroups.com
要退订此论坛,请发邮件至 perlchina+unsubscribe@googlegroups.com
更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛
-~----------~----~----~----~------~----~------~--~---
没有评论:
发表评论