全部学习汇总: GreyZhang/perl_basic: some perl basic learning notes. ()
又是说Perl的功能,不是Linux的bash。
我知道bash中的grep功能非常强大,在网络上看到过好多关于bash shell 中grep的文章,有的介绍grep怎么用,还有的解释为什么grep速度这么快等等。看起来似乎就很高端,而且使用起来也很有学问。曾经对bash中的grep有过一点点简单的了解,但是也是过眼云烟、走马观花型的,到现在脑子里几乎没有留下什么东西,只记得这个命令可以实现查询功能。
总觉得有了正则表达式,grep对我来说是可有可无的,因为我日常工作中用到的简单的查询目前使用正则表达式处理起来还比较顺手。不过,既然在网络上炒出了那么多的文章,grep这个词还是得稍微重视一下。趁着这次重读小骆驼的第六版,至少把Perl中的grep了解一下,且不管它的功能跟bash中的功能是否有什么异同。
简单读了小骆驼,grep被称之为是一种列表筛选功能的函数。传入的参数有两个,一个是代码块,第二个是一个列表。针对列表中的每一个元素,grep的第一个代码块参数会按照$_中获取到的值进行相应的处理。代码块的处理最终结果是true或者false,将返回为true的元素全都筛选出来。
通常,能够用grep实现的功能使用foreach也能够实现。但是grep的优点在于代码简短紧凑而且执行效率高。同时,不像foreach,grep不需要额外的变量作为临时的存储。
写一段测试代码,输入一系列名字,筛选出长度4以及4以上的名字:

执行结果如下:

看起来,代码是比使用循环结构实现的方式简短一些。至于执行的速度或者效率,我多少还不太关系。个人的原则是能够解决问题就好,不费时间去寻找最完美的解决方案。让自己知识的广度弥补深度的不足。
















