Perl语言入门笔记 第二章 标量数据

#!/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");

posted @ 2015-08-23 15:41  笑面浮屠  阅读(288)  评论(1编辑  收藏  举报