#!/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");
Perl语言入门笔记 第二章 标量数据
最新推荐文章于 2022-07-12 11:44:55 发布