perl中grep与map使用总结

来源:互联网 发布:阿里云迁移工具 编辑:程序博客网 时间:2024/05/22 12:57
一、grep操作符使用
       grep BLOCK LIST
       grep EXPR,LIST
       grep操作符使用一个“测试表达式”(BLOCK或者EXPR)和一个值列表LIST。它将列表LIST中的每一项按照顺序依次取出,并且放到$_变量中。然后在标量上下文中对测试表达式求值。如果表达式的值为真,grep表达式就会把$_的值传递至输出列表。
       在列表上下文中,grep操作符返回一个包含所有选中项的列表。在标量上下文中,grep表达式返回选中项的数目:
       my @result = grep EXPR, @input_list;
       my $count = grep EXPR, @input_list;

   my @nums = (1,3,6,10,16);   my @big_than_5 = grep $_>5,@nums;  #@big_than_5 = (6,10,16)   my @odd_nums = grep $_&1,@nums;    #@odd_nums = (1,3)   my @match_1 = grep /1/,@nums;      #match_1 = (1,10,16)   my @big_than_5_idx = grep {$nums[$_] > 5} 0..$#nums;  #big_than_5_idx = (2,3,4)       

二、map操作符使用
       map BLOCK LIST
       map EXPR, LIST
       map操作符将一个列表转换成另一个,它的语法和grep操作符很相似,但map操作符用于格式转换而不是测试。map操作符在列表上下文中对表达式求值,每次表达式的求值都为最终的输出列表提供一部分内容。
   my @nums = (1,3,6,10,16);   my @sqr = map $_*$_, @nums;            #@sqr=(1,9,36,100,256)   my %sqr_hash = map {$_, $_*$_} @nums;  #%sqr_hash=(1=>1,3=>9,6=>36,10=>100,16=>256);   my %reverse_hash = map {$nums[$_], $_} 0..$#nums; #%reverse_hash=(1=>0,3=>1,6=>2,10=>3,16=>4)



0 0
原创粉丝点击