grep返回一个数字中符合条件的所有元素;map对数字中所有元素实施转化并返回结果。两者都遍历了数组,但一个用来搜索,一个用来转化。两者都支持表达式或者代码块。
#!/usr/bin/perl -w use strict; #get positive number my @number = (1,2,3,-1,-5); my @positive_number = grep $_ > 0,@number; print "\@number: (@number)\n"; print "\@positive_number: (@positive_number)\n"; #get sqrt my @sqrt_number = map sqrt $_,@positive_number; print "\@sqrt_number: (@sqrt_number)\n"; #split words my @lines = ( "hello world","not too bad" ); my @words = map m/\b(\w+)\b/g,@lines; print "\@lines size: " . @lines . " (@lines)\n"; print "\@words size: " . @words . " (@words)\n"; #modify email address my @email_addresses = ( "fei\@gmail.com","fei\@sina.com.cn" ); my @disguised_addresses = map { my $email = $_; $email =~ s/\@/ at /; $email =~ s/\./ dot /g; $email; } @email_addresses; print "\@email_addresses: (@email_addresses)\n"; print "\@disguised_addresses: (@disguised_addresses)\n";参考:http://mailman.linuxchix.org/pipermail/courses/2003-November/001368.html