[Perl语法篇] 数据类型:标量$Scalar

来源:互联网 发布:飞鸽网络打印机 双面 编辑:程序博客网 时间:2024/04/30 00:34

I.知识点概要:

    1.标量(数字型、字符型)


1.标量$Scalar

  标量是用于存放一个值的变量,这个值可以是数字,也可以是字符串(其实数字就是字符串)。

  Perl通过变量前的“魔符”$来识别标量。

1.1.数字类型标量

# 浮点数直接量  $Scalar =1.25;  $Scalar =255.000;  $Scalar =7.25e45;       # 7.25*10的45次方  $Scalar =-6.5e24;       # -6.5*10的24次方  $Scalar =-12e-24;       # -12*10的-24次方  $Scalar =-1.2E-23;      # 另一种表示法:字母E也可以是大写# 整数直接量  $Scalar =0;  $Scalar =2001;  $Scalar = -40;  $Scalar =61298040283768;  $Scalar =61_298_040_283_768;    # 整数直接量可以插入下划线# 非十进制整数直接量  $Scalar =0377;           #八进制以0开头  $Scalar =0xff;           #十六进制以0x开头  $Scalar =0b1111;         #二进制以0b开头  $Scalar =0x1377_0B77;    #整数直接量可以插入下划线  $Scalar =0b1101_0101;    #整数直接量可以插入下划线

  注1:尽管数字有两种类型:整数、浮点数,但在Perl中总是按照双精度浮点数IEEE-74515位精度)的要求来保存数字并进行运算。

 

1.2.字符串类型标量

# 单引号内字符串直接量  $Scalar ='fred';           #含4个字符:f、r、e、d  $Scalar ='';               #空字符串(没有字符)  $Scalar ='hello\n';        #含7个字符:h、e、l、l、o、\、n  $Scalar ='\'';             #含1个字符:'(转义)  $Scalar ='\\';             #含1个字符:\(转义)# 双引号内字符串直接量  $Scalar ="fred";           #与'fred'写法一致  $Scalar ="hello\n";        #hello、换行(转义)  $Scalar ="ABC\lABC" ;      #ABCaBC(转义)

  1:单引号字符串除单引号()和反斜线(\)外,其他字符都代表自己。要表示单引号或反斜线本身则必须在其前面加上反斜线转义,即(\’)(\\)。

  注2:双引号字符串在单引号字符串基础上扩展了更多的反斜线转义,功能更强大。

  注3:字符串可以是各种字符(字母、数字、标点)任意组合而成,最短的字符串不包括任何字符,即空字符串(与C中不用的是Perl字符串不需要空字符表示结尾);最长的字符串没有限制,甚至可以填满所有内存。

 

1.3.数字与字符串自动转换

  Perl会根据需要,自动在数字与字符串之间进行类型转换,判断依据取决于操作符。对数字进行运算的操作符如果遇到字符串类型操作数,Perl会自动将字符串转换成等效十进制浮点数进行运算(”12fred34”->12”fred”->0);同样需要字符串的操作符意外得到数字,该数字就会被转换成形式相同的字符串(12->”12”)。

  注1:非十进制表示的数字直接量的“前置零”,不能用于字符串到数字的转换,如’0377’->377,而不是255

 

1.4.标量初始化-undef值、defined函数

  如果还没赋初值就用到某个标量,则此时标量初始值为特殊的undef值,undef值既可被当做数字0,也可被当做空字符串,但undef既不是数字也不是字符串。

  如果要判断某个标量是否被赋初值,则可使用defined函数,如果是undef,该函数返回假,否则返回真。

# undef值、defined函数  $Scalar =undef;            #undefine  #$Scalar ='';              #defined  if ( defined($Scalar) ){    print "defined";   }else{    print "undefined";   }

 

1.5.剪除字符串末尾换行符-chomp函数

  chomp函数用于将字符串型标量结尾的换行符(如果存在的话,不存在则不做任何处理)去掉,它的返回值是实际移除的字符数,这个返回值无用处。

# chomp函数  $Scalar ="hello\n";   chomp($Scalar);  print "$Scalar";          #输出hello

 

-------------------------------------------------------------------------------------------------------------------------------

 I.参考资料:

    [1]. 盛春译.《Perl语言入门》[第六版][M].东南大学出版社,2012.

           第二章,标量数据

    [2]. 周良忠译.《C程序员精通Perl》[M].人民邮电出版社,2003.

           第2章,Perl基础知识

 II.修订记录:

    2013.01.04.  第一稿

-------------------------------------------------------------------------------------------------------------------------------

 

 

原创粉丝点击