Chinaunix

标题: perl grep的一个疑问(目前) [打印本页]

作者: perlplus33    时间: 2011-04-14 12:44
标题: perl grep的一个疑问(目前)
本帖最后由 perlplus33 于 2011-04-14 13:17 编辑

书上说的用法:grep (EXPR, LIST); 或者 grep BLOCK, LIST
这里我用的是 grep (EXPR, LIST)
如果EXPR是 /h/, 就显示包含 h的元素;但是如果是'h'则显示所有元素。这是为何?搜索出来的grep都是unix下的,看了很久也没找到对应的部分(功力不够 :-()
  1. @mystr=qw(hello this is);
  2. print grep (/h/, @mystr);
复制代码

perl_grep.gif (212.03 KB, 下载次数: 17)

perl_grep.gif

作者: 超级细菌    时间: 2011-04-14 12:57
如果是h的话,应该只输出hello和this这两个词吧
作者: zhlong8    时间: 2011-04-14 13:08
本帖最后由 zhlong8 于 2011-04-14 13:11 编辑

EXPR 为真就返回, 'h' 永远为真
作者: jason680    时间: 2011-04-14 13:09
本帖最后由 jason680 于 2011-04-14 13:13 编辑
书上说的用法:grep (EXPR, LIST); 或者 grep BLOCK, LIST
这里我用的是 grep (EXPR, LIST)
如果EXPR是 / ...
perlplus33 发表于 2011-04-14 12:44


当你不是/xxx/时....
那就变成True or false问题
试用 1, 0就知道了

    print grep (1, @mystr);
    print grep (0, @mystr);

(其实一直都是T/F问题)
/xxx/只是if($_ =~ m/xxxx/)简化而已...
作者: flw    时间: 2011-04-14 13:14
map sort grep 永远都不要用没有花括号的格式。
应该用下面的格式:

map {} @array;
sort {} @array;
grep {} @array;
作者: albertd    时间: 2011-04-14 13:18
回复 3# zhlong8


    正解
作者: perlplus33    时间: 2011-04-14 13:22
谢谢两位的点睛,谢谢斑竹的经验之谈。
__EXPR 为真就返回, 'h' 永远为真__
作者: masylichu    时间: 2011-04-14 14:16
问一个和主题不太相关的问题,楼主的gif格式的图片是怎么生成的啊
作者: masylichu    时间: 2011-04-14 14:20
楼主,3楼解释的是正确的。
/h/ 是匹配模式
'h' 是一个字符,其值不是空或者零。所以系统就认为是真值。
作者: ttcn_cu    时间: 2011-04-15 01:14
回复 5# flw


    花括号按起来就是比小括号快




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2