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就不会输出程序名和行号,反之则输出。特殊变量$!代表出错信息