码迷,mamicode.com
首页 > 其他好文 > 详细

perl的map函数

时间:2016-08-05 17:39:48      阅读:153      评论:0      收藏:0      [点我收藏+]

标签:

来源:

perl的map函数的使用:

 

语法

map EXPR, LIST    这个当中有,

map BLOCK LIST    这个当中没有,
 

定义和使用

对list中的每个元素执行EXPR或BLOCK,返回新的list。对每一此迭代,$_中保存了当前迭代的元素的值。

 

返回值

如果返回值存储在scalar标量中,则代表map()返回数组的元素个数;

如果返回值存储在list中,则代表map()函数的数组;

 

实例1 (将单词首字母大写)

 1 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->#!/usr/bin/perl -w
 2 
 3 @myNames = (jacob, alexander, ethan, andrew);
 4 @ucNames = map(ucfirst, @myNames);
 5 $numofucNames = map(ucfirst, @myNames);
 6 
 7 foreach $key ( @ucNames ){
 8  print "$key\n";
 9 }
10 print $numofucNames;

结果为

Jacob
Alexander
Ethan
Andrew
4

 

实例2 (获得所有的书名中包含的单词,且转化为大写)

1 my@books = (Prideand Prejudice,Emma, Masfield Park,Senseand Sensibility,Nothanger Abbey,
2 Persuasion,  Lady Susan,Sanditon,The Watsons);
3 
4 my@words = map{split(/\s+/,$_)}@books;
5 my@uppercases = map uc,@words;
6 foreach $upword ( @uppercases ){
7  print "$upword\n";
8 }

结果为 (Perl map函数的输入数组和输出数组不一定等长,在split起过作用之后,当然@words的长度要比@books长了。)

PRIDEAND
PREJUDICE
EMMA
MASFIELD
PARK
SENSEAND
SENSIBILITY
NOTHANGER
ABBEY
PERSUASION
LADY
SUSAN
SANDITON
THE
WATSONS

 

实例3 (将多余2位的数字提取到新的list)

1 my @buildnums = (R010,T230,W11,F56,dd1);
2 my @nums = map{/(\d{2,})/} @buildnums;
3 foreach $num (@nums){
4   print "$num \n"
5 }

结果

010 
230 
11 
56 

 

实例4  匹配的标量和列表上下文返回值

 1 $a = RRR32Sttt;
 2 @yy = $a=~/RRR.*ttt/;
 3 $numofyy = $a=~/RRR.*ttt/;
 4 print "@yy\n";
 5 print "$numofyy\n" ;
 6 print "$1";
 7 
 8 @yy2 = $a=~/(RRR).*(ttt)/;
 9 $numofyy2 = $a=~/(RRR).*(ttt)/;
10 print "@yy2\n";
11 print "$numofyy2\n";
12 print "$1 $2";

结果   (正则表达式匹配后返回的为数组或长度,取决于表达式中是否有()或者接收的变量类型)

1
1
RRR ttt
1
RRR ttt

表达式中是否有()       接收的变量类型       结果

无              标量     永远1或0

有              标量     永远1或0

无              列表     永远(1或0)

有              列表     结果的列表

 

perl的map函数

标签:

原文地址:http://www.cnblogs.com/spriteflk/p/5741915.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!