map函数的学习和使用

学习的过程中,主要参考了Learning Perl和

http://blog.chinaunix.net/uid-9398085-id-2189657.html以及

http://www.cnblogs.com/itech/archive/2010/11/19/1881476.html

的博客。并表示感谢!

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

这段话说的非常好,他的作用如下:

列表=========》map处理===========》返回一个列表

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

所以他的语法结构是这样的:

返回的列表=map (表达式或者块)要处理的列表

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

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:\WINDOWS\system32\cmd.exe /c perl "F:\perl\b.pl"
abcdefg
ABCDEFG
Hit any key to close this window...

我们再来看一个块的例子:

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+)(\d\d\d)/$1,$2/;#每隔三位添加逗号
	$number =~s/^(-?)/$1\$/;#添加美元符号
	$number;
}

这里map后面跟的是一个子程序&big_money;

得到的结果如下:

C:\WINDOWS\system32\cmd.exe /c perl "F:\perl\b.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...





你可能感兴趣的:(map函数的学习和使用)