全部学习汇总: GreyZhang/perl_basic: some perl basic learning notes. (github.com)
使用通配符处理文件一般是用于文件的拷贝、删除以及对文件逐个分析等功能。在Perl中遇到的相应的功能基本上也是如此。通配符匹配处理文件(文件名)需要使用glob指令。
写个简单的测试程序:
以上程序获取了当前目录下的所有文件名称然后逐个输出其文件名,执行结果如下:
从结果上看来,通配符获取到的不仅仅是文件名,连同文件夹也一同获取了。有点继承UNIX文件系统的思想的意思,一切都是文件。
简单修改一下参数,输出当前目录中的所有的Perl程序,后缀名为pl的文件。
执行结果如下:
的确是输出了所期待的结果。
Perl中还有这个功能的一个变形形式,直接通过钻石符号处理,处理的方式也读取文件句柄的方式差不多。修改代码如下:
执行结果:
可以看得出,这个执行结果跟前一次的程序执行结果是一致的。
后记:
学完了这部分功能,我想起了自己刚刚工作的时候需要完成的一个工作中就用到了这个功能。当时需要处理simulink模型,而我当时的M脚本水平比较差,Perl的水平也不高,于是就把两部分功能糅合到了一块儿来使用。为了获取模型的文件名,我变使用了glob方式的通配符匹配方法。而且,从自己自学参考的教程中抄了一段我至今也没怎么学会的代码(如今有些不想学了,因为我掌握更为简单易懂又易写易维护的方式)。最终,东拼西凑的代码居然神奇地完成了功能而且被别人持续使用了好长时间。
不过,现在想想当时的那个破程序,不禁觉得有些羞愧感。以我现在的水平,断然不会写出那么差劲儿的代码。虽说那段代码能够正常使用,不过维护总还是需要的,不知道我给现在的那个倒霉蛋留下了这个随时肯能钻出马蜂的马蜂窝。对不住了,那个倒霉的兄弟!