#!/usr/bin/perl -w =pod 数字: perl中的数字全部是以双精度浮点数存储的 数字很长时特俗写法,当然普通写法更支持: 61_298_040_283_768 0377 #八进制 0xff #十六进制 0b11111111 #二进制表示 0x1377_0b77 0x50_65_72_7c oct() #八进制字符串转换成数字,也接收二进制参数 hex()#字符串十六进制转换成数字 + - * / % /总以浮点数运算 2**3 = 9 乘方 编程加上:use utf8;这句 字符串: 注意:不会像c/c++语言一样自动添加\n 'hello \'per\\l' 除了'和\需要转义,其他写在单引号里面的都代表它自己,包括换行符 "lo\"ve\\ me,love my dog!\n" \l 将下个字母转为小写 \L 将它后面的所有字母都转为小写的,直到\E为止 \u 将下个字母转为大写 \U 将它后面的所有字母都转为大写的,直到\E为止 \Q 相当于把它到\E之间的非单词(non word)字符加上反斜线转义 \E 结束\L,\U和\Q开始的作用范围 . 点连接字符串得到更长的字符串,两个数字也能连接 x 小写的x后面接数字,表示字符串会重复几次,如print "fred"x3; 数字和字符串之间的转换: 取决于操作符,+号两边会自动转为数字,.号两边自动转为字符串 "12fred35" * "3" = 36,"fred"*2 = 0 Perl的内置警告信息: warnings: use warnings; warnings能够制定代码的作用范围,比-w更灵活,-w显示全部的警告 -w: $perl -w perl_program #运行程序添加-w #!/usr/bin/perl -w diagnostics: use diagnostics; 使警告信息更为具体 $perl -Mdiagnostics ./my_program #在需要时添加 变量(variable): 存储一个或多个值的容器的名称; 标量变量: 存储一个值的变量 数组和哈希表属于变量,但不是标量变量 标量变量是美元符开头,$fred,$的意思是取单个值,到时可以看到,$符号取数组中单个元素的情况 @array; #数组 $array[1]; #数组中的单个标量 变量的命名: 我的命名原则: 变量是驼峰写法,如:myArray,myStrLen,函数名称是下划线,如:write_to_ram; 标量赋值: 等号左边是标量,右边是要赋的值,如:$str = "tell what are you doing"; #后面不会像c语言自动添加\n的 双目操作符: 和c/c++哪些用法一样,+=,-=,*=,/=,.=,**=,..... print输出: print没有特别指出默认的标准输出,即把结果输出到屏幕上 如:print "The answer is xxx\n"; print "The answer is ",6*7,".\n"; $meal = "brontosaurus steak"; $barney = "$meal,dadadida \n"; #$meal在这里以上面的字符串代替 $barney = $meal . "dadadida\n"; print $barney; #输出字符串等价:print "$barney"; #注意上面的全是以双引号包括的 要是输出时标量后面要直接跟字母下划线等字符时: $str = "tianya"; 如不正确写法: print "print $strlala\n";#此时的标量是$strlala 如正确写法: print "print $str",".lala\n"; print "print ",$str,".lala\n"; print "print ${str}lala\n"; 推荐最后一种正确的写法 代码点: 创建字符,参考书籍 操作符的优先级: 全敲上的作用是我想看看,perl有多少个操作符 结合性 操作符 左 括号,给定参数的列表操作符 左 -> ++ -- 右 ** 右 \ ! ~ + - 左 =~ !~ #正则 左 * / % x 左 + - . 左 << >> 具名的单目操作符(-X文件测试;rand) < <= > >= lt le gt ge #数字,字符串比较,从头依次比较字母或数字的大小,而不以字符串长度作为参考 == != <=> eq ne cmp 左 & 左 | 左 && 左 || ...... 右 ?: 右 = += -= .= .... 左,=> #哈希表赋值 列表操作符(向右结合) 右 not 左 and 左 or not 记优先级没什么作用,不想计算时错误,那就多添加括号呗 if语句: if(表达式) { #you statement } elsif(表达式) { #your statement } else { } 布尔值: perl语言中没有明确的bool值,像其它语言有True,False perl中: 数字0,字符串"",'','0',"0"代表假 标准输入<STDIN>: 当我们想要从键盘输入自己的数据时,就需要STDIN这个标准输入,它是以\n结束的,就是以回车结束,输入的结果中保存这个\n,一般我们不需要\n,那就需要chomp()函数去掉\n chomp($line = <STDIN>); #chomp去掉末尾的\n chomp $line; #chomp的括号可以不加,除非去掉括号改变表达式的意义 chomp只去掉最后一个\n,没有\n则什么都不做 while循环: while(表达式) { #your statement } undef值: 变量没赋值时,它们的值就是undef,但是它像一个墙上草,用到什么地方就是什么,和数字一块操作就表现为0,和字符串一起操作就表现为空字符,但undef既不是数字也不是字符串,它完全是另一种类型的标量值 编程的时候我们常常不需要初始化标量,就把它当成0或空字符串使用 defined函数: 行输入操作符<STDIN>有时候会返回undef(可惜我还没见到过,可能是我不太理解这个行操作符) 它的脚注解决了我的疑问: 一般来说,键盘输入没有"文件结尾"可言;不过,此输入也可能是由文件重定向而来的。另外,用户也有可能按下系统转义的"文件结尾"按键序列。 用法; $madonna = <STDIN>; if(defined($madonna)) #如果是undef返回假,否则返回真 { print "The input was $madonna"; } else { print "No input available\n"; } =cut $hex1 = 0xff; $strHex1 = "0x55"; $strOct1 = "023"; print $hex1,"\n"; print hex($strHex1),"\n"; #正确 print oct($strHex1),"\n"; #正确 print hex($strOct1),"\n"; #错误 print oct($strOct1),"\n"; #正确 print 'good good study,day day up\n';#print 'good good study,day day up\\n';输出是一样的,最后末尾输出都是\n print "\n"; print "fred"x3,"\n"; system("pause");