PERL备忘录

不定时更新

初学者一定要弄清什么是$,什么是@,还有上下文与其之间的关系,这是perl的魅力所在(至少我觉得这是魅力)。

1 print "hello world!" x 3
2 #输出hello world!hello world!hello world!
3 #那个操作符是英文字母x,不是乘号!

@ARGV为空时PERL会从STDIN读取输入

 1 @ARGV = ();
 2 while(<>){
 3     chomp;
 4     print "$_\n"
 5 }
 6 
 7 #the same as below
 8 while(<STDIN>){
 9     chomp;
10     print "$_\n"
11 }

argc在特殊变量$0中,根据调用程序的方式不同,情况可能改变。

print在打印内插数组时会加空格

1 @arr = qw( zz xx yy xyz );
2 print @arr; #zzxxyyxyz
3 print "@arr";#zz xx yy xyz
#不会输出25 输出5 $result = 5
$result = print (2+3)*5

#输出25 $result = 1
$result = print((2+3)*5)

#因为print输出成功,返回值就是1 启用warning可以避免此类问题

格式化输出:%f会四舍五入,%d则不会, %10d与%-10d的区别在于一个向右对齐,一个向左。%g会自动选取合适的形式来格式化数字, g 可以理解为general。%%代表输出真正的百分号。

open BEDROCK, '>:crlf', $file_name;
#把每个换行符转换为CR-LF,如果原本就是CR-LF,则转换后会多出一个换行符

open BEDROCK, '<:crlf', $file_name;
#在读入文件时,把所有CR-LF风格的换行符转换为Unix风格

open BEDROCK, '>:utf8', $file_name;
#不检查,直接以utf8格式输出

open BEDROCK, '>:encoding(UTF-8)', $file_name;
#检查数据后,以utf8格式输出
die "error msg\n";
#结尾加上换行符die就不会输出程序名和行号,反之则输出。特殊变量$!代表出错信息

 

posted @ 2013-03-28 10:02  Functional Life  阅读(147)  评论(0编辑  收藏  举报