【5】遍历数组 @flavors = qw(chocolate vanilla strawberry mint sherbert ); for($index=0; $index<@flavors; $index++) { # 是在标量上下文中计算的,计算的结果是5 print "My favorate flavor is $flavors[$index] and ..."; }
【6】遍历数组,迭代器 foreach $cone (@flavors) { # $cone设置为@flavors中的各个值 print "I'd like a cone of $cone\n"; } 迭代器并不只是设置为列表中的每个元素的值,它实际上是对列表的元素的引用,如果修改该循环中的cone,就能修改@flavors中的对应元素
【7】标量转换成数组 @words = split(/ /, "The quick brown fox"); #包含了各个单词,即The、quick、brown和fox,
while() { ($firstchar) = split(//, $_); print "The first character war $firstchar\n"; } 第一行用于读取来自终端的数据,每次读一行,并将$_设置为等于该行。第二行使用空模式来分割$_。split函数返回来自$_中的这个行的每个字符的列表。该列表被赋予左边的列表,而该列表的第一个元素则被赋予$firstchar,其余均放弃。
@music = ('White Album,Beatles', 'Graceland,Paul', 'A boy Named Sue,Goo Goo Dolls'); foreach $record (@music) { ($record_name, $artist) = split(/,/,$record); }
$message = "Elvis was here"; print "The string \"message\" consist of:", join('-',split(//, $message)); 输出将是:The string "message" consist of:E-l-v-i-s- -w-a-s- -h-e-r-e
【9】给数组重新排序,Sort函数将一个列表作为它的参数,并且大体上按照字母顺序对列表进行排序,然后该函数返回一个排定顺序的新列表。原始数组保持不变 @chiefs = qw(clinton bush reagan carter ford nixon); print join(' ',sort(@chiefs)); 它的默认排序次序是ASCII顺序。这意味着以大写字母开头的所有单词均排在以小写字母开头的单词的前面。用ASCII顺序对数字进行排序的方式与你期望的不一样,它们不按值来排序。例如,11排在100的前面。在这种情况下,必须按非默认顺序来进行排序。
【11】reverse函数能够对字符串的字符进行倒序操作,返回倒序后的字符串 @lines = qw(I do not like green eggs and ham); print join(' ',reverse @lines),"\n"; print join(' ',reverse sort @lines); 输出: ham and eggs green like not do I not like ham green eggs do and I
在大多数情况下,将整个文件读入一个数组(如果文件不是太大,只有对小型文件,才能将整个文件读入数组变量,否则会out of memory),是处理文件数据的一种非常容易的方法. open(Myfile,"testfile") || die "opening testfile: $!"; @stuff = ; close(Myfile); foreach(reverse(@stuff)) { print scalar(reverse($_)); }
【13】写入文件 open(NEWFH,">output.txt") || die "Opening output.txt: $!"; open(APPFH,">>logfile.txt") || die "Opening logfile.txt: $!"; close函数通知操作系统说,你已经完成写入操作,数据应该移到磁盘上的永久性存储器中: close(NEWFH); close(APPFH);
print函数实际上可以用于将数据写入任何文件句柄,语法:print filehandle LIST open(LOGF,">>logfile") || die "$!"; if ( ! print LOGF "This entry was written at", scalar(localtime), "\n") { warn "Unable to write to the log file: $!"; } close(LOGF); #名字为logfile的文件被打开,以便进行附加操作。print语句将一条消息写入LOGF文件句柄。print的返回值被检查核实,如果记录项无法输出,便发出警告消息。然后文件句柄被关闭。
同时打开多个句柄:一个简单的文件拷贝 open(SOURCE,"soucefile) || die "$!"; open(DEST,">distinationfile") || die "$!"; print DEST
print "save data to what file?"; $filename = ; chomp $filename; if ( -s $filename) { warn "$file contents will be overwritten!\n"; warn "$file was last updated ",-M $filename, "day ago.\n"; }