perl map函数的学习和使用

发布时间:2019-12-02编辑:脚本学堂
perl map函数的学习和使用,供大家学习参考。

perl map函数的学习和使用,供大家学习参考。

本文参考了如下的文章:
有关perl的map函数及实例
Perl map 函数应用实例
perl map用法详解

它使用一个列表,并对每个元素以一个指定的代码块或者表达式进行求值运算,然后返回所有结果的一个列表。

这段话说的很好,它的作用如下:
列表=========》map处理===========》返回一个列表

它的操作对象是列表,得到的结构也是列表。

所以,语法结构是这样的:
返回的列表=map (表达式或者块)要处理的列表

先来看一个表达式的例子:
 

复制代码 代码如下:

#!/bin/perl

use strict; 
use warnings; 
my @first_list; 
my @second_list; 
my $first_list; 
my $second_list; 
 
@first_list=qw/a b c d e f g/; 
 
foreach $first_list(@first_list) 

    print $first_list; 

print "n"; 
 
@second_list = map uc,@first_list; 
 
foreach $second_list(@second_list) 

    print $second_list;  

print "n"; 

这里用到的就是perl里面的一个uc命令,也就是转换大小写的命令。我们处理first_list以后得到的是一个新的列second_list;

得到的结果:
C:WINDOWSsystem32cmd.exe /c perl "F:perlb.pl" 
abcdefg 
ABCDEFG 
Hit any key to close this window... 

再来看一个块的例子:
 

复制代码 代码如下:
#!/bin/perl
use strict; 
use warnings; 
 
my @data; 
my @formatted_data; 
my $formatted_data; 
 
@data = (4.75,1.5,2,1234,6.9456,12345678.9,29.95); 
@formatted_data = map{&big_money($_)} @data; 
foreach $formatted_data(@formatted_data) 

print $formatted_data."n"; 

 
sub big_money 

my $number = sprintf "%.2f",shift @_;#对number进行保留两位小数的处理 
1 while$number =~ s/^(-?d+)(ddd)/$1,$2/;#每隔三位添加逗号 
$number =~s/^(-?)/$1$/;#添加美元符号 
$number; 

这里map后面跟的是一个子程序&big_money;
得到如下的结果:
C:WINDOWSsystem32cmd.exe /c perl "F:perlb.pl" 
$4.75 
$1.50 
$2.00 
$1,234.00 
$6.95 
$12,345,678.90 
$29.95 
Hit any key to close this window...