学习的过程中,主要参考了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; }
得到的结果如下:
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...