+ -
当前位置:首页 → 问答吧 → perl grep的一个疑问(目前)

perl grep的一个疑问(目前)

时间:2011-04-14

来源:互联网

本帖最后由 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);
复制代码
下载 (127.01 KB)
2011-04-14 13:16

perl_grep.gif (212.03 KB)

下载次数:0

2011-04-14 13:11

作者: perlplus33   发布时间: 2011-04-14

如果是h的话,应该只输出hello和this这两个词吧

作者: 超级细菌   发布时间: 2011-04-14

本帖最后由 zhlong8 于 2011-04-14 13:11 编辑

EXPR 为真就返回, 'h' 永远为真

作者: zhlong8   发布时间: 2011-04-14

本帖最后由 jason680 于 2011-04-14 13:13 编辑


QUOTE:
书上说的用法: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/)简化而已...

作者: jason680   发布时间: 2011-04-14

map sort grep 永远都不要用没有花括号的格式。
应该用下面的格式:

map {} @array;
sort {} @array;
grep {} @array;

作者: flw   发布时间: 2011-04-14

回复 zhlong8


    正解

作者: albertd   发布时间: 2011-04-14

谢谢两位的点睛,谢谢斑竹的经验之谈。
__EXPR 为真就返回, 'h' 永远为真__

作者: perlplus33   发布时间: 2011-04-14