• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

perl的map函数

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

来源:

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)

有              列表     结果的列表

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Leaning perl 第2章练习题答案发布时间:2022-07-22
下一篇:
Perl自动释放Licence启动Verdi发布时间:2022-07-22
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap