perl的map函数

perl的map函数的使用:

 

语法

map EXPR, LIST

map BLOCK LIST
 

定义和使用

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

 

返回值

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

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

 

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

# !/usr/bin/perl -w

@myNames   =  ( ' jacob ' ,   ' alexander ' ,   ' ethan ' ,   ' andrew ' );
@ucNames   =   map ( ucfirst ,   @myNames );
$numofucNames   =   map ( ucfirst ,   @myNames );

foreach   $key  (  @ucNames  ){
 
print   " $key\n " ;
}
print   $numofucNames ;

结果为

Jacob
Alexander
Ethan
Andrew
4

 

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

my @books   =  ( ' Prideand Prejudice ' , ' Emma ' ,   ' Masfield Park ' , ' Senseand Sensibility ' , ' Nothanger Abbey ' ,
' Persuasion ' ,    ' Lady Susan ' , ' Sanditon ' , ' The Watsons ' );

my @words   =   map { split ( /\ s +/, $_ )} @books ;
my @uppercases   =   map   uc , @words ;
foreach   $upword  (  @uppercases  ){
 
print   " $upword\n " ;
}

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

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

 

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

# !/usr/bin/perl -w

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

$a = 'RRR3ttt';
@yy = $a=~/RRR.*ttt/;
$numofyy = $a=~/RRR.*ttt/;
print "@yy\n";
print "$numofyy\n" ;

@yy2 = $a=~/(RRR).*(ttt)/;
$numofyy2 = $a=~/(RRR).*(ttt)/;
print "@yy2\n";
print "$numofyy2\n";
print "$1 $2";

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

010
230
11
56
1
1
RRR ttt
1
RRR ttt

 

完!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值