欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Perl(四)基本的数据类型

程序员文章站 2024-03-14 17:01:46
...

一、Perl的四种变量

Scale:$ 纯变量,标量

数组:@

Hash:%

文件:一般是大写来标识!

二、Perl变量的组成

组成:魔术符+标识符

说明:标识符和Python类似!

特殊:没有关键字,但不要和内置变量重复!

特殊变量

练习1

#!/usr/bin/perl
# (1)区分大小写
$var='lower';
$Var='upcase';
print $var."\n";

# (2)变量的长度不限制
$this_is_a_long_legalname="long var";
print "var is $this_is_a_long_legalname\n";

# (3)if是关键字,没有冲突!
$if="key";
print "key bar id $if\n"

三、perl简单变量

(1)整数表示方式

123        正数
0          零
-12        负数
12e2       科学计数方法(1200) 
61_123_234 分割整数(不知道是多少位,用下划线_表示分割,其它语言用.号分割,perl"."号有特殊的含义),处理会去除下划线!
012        说明:整数以0开头默认是8进制(octal)-->表示十进制10
0x1f       说明:以0x开头默认是16进制,f不区分大小写!

(2)浮点数

{11.4、-0.3、.3、3.}

5.4e2 e或E,+或-(5.4*10^2)

(3)整数的截取和浮点数的精度(5.16版本)

整数20位以内(包含)不会截取,超过20位,数值太大的时候会以科学计数法的方式保留小数点14位

浮点数的精度:指数范围在(-309,308),太小会显示0,太大会显示inf(linux平台下)

$var=1234_9876_5432_1012_3451;
print $var ."\n";
$va1=2.23e308;
print "$va1\n";
$var2=9.01E21+0.01-9.01E21;
print $var2;

# 结果:12349876543210123451、inf、0

细节:perl中以双精度(浮点数)方式保存和运算数值的方式

就算写的是整数,在内部也会转换成等效的浮点数类型保存!

但在perl内部,有些运算会将浮点数转换成整型进行,而且也有integer编译器可以强制编译成整型。

(4)字符串变量

两种方式:单引号或者双引号标识的一组字符组成!

单引号:所见即所得,对特殊{',\}如果需要特殊的含义也需要转义

双引号弱引用,可以进行变量内插(变量替换)

变量内插的特点:最长匹配(贪婪),如果想最短匹配需要结合{}

注:与shell类似

#!/usr/bin/perl
$str="short";
$string="long";
print "match longest $string\n";
print "match longest ${str}ing\n";

# 结果:match longest long  --->  match longest shorting

双引号中的转义字符

Perl(四)基本的数据类型

练习

# (1)相铃
print "bell ring:\a\n";
# (2)退一个字符-->backspace
print "back#\bspace\n";
# (3)回车-->跳到当行的开头-->abcy
print "copy\rabc\n";
# (4)值表符-->一般是四个空格
print "abc\tdef\n";

# (5)转义-->取消字符的含义{$,",\}
print "the \$var\n";
print "a quote \" in string\n";
print "a quote \\ in string\n";
# (6)\nnn表示8进制的ASCII码,\xnn表示16进制的ASCII码
print "\045\n";
print "\x25";

结果

bell ring:
backspace
abcy
abc	def
the $var
a quote " in string
a quote \ in string
%
%

单引号:不进行转义('和\需要表示原始字符还是需要转义),不进行变量替换,字符串可以跨行(相当于\n)

(5)字符串的特殊表示

文本形式-->q(quota)表示引号的含义

好处:单引号和双引号就不需要用\进行转义

Perl(四)基本的数据类型

(6)变量的初始值

Perl(四)基本的数据类型

分析1:声明一个未定义的变量,即使以前有值也是未定义!

分析2:只关心第一个和最后一个,其余的没有值(不占用内存)!

(7)chop和chomp的区别

#!/usr/bin/perl
$a="abcd";
# 说明:chop截去最后一个字符,无论是什么字符!
chop($a);
print "chop $a\n"; #abc

$b="abcd";
# 说明:截去末位的行分割符(一般是\n),由$/来定义,如果行末尾是这个就截去,不是则不变,可以自定义!
chomp($b);
print "chomp $b\n";#abcd

###############分割#####################

# 说明:带换行的--->"|"是为了说明!
$c="abc\n";
chop($c);
print "chop $c|"; #截去的是\n字符

$d="abc\n";
chomp($d);
print "chomp $d|"; #截断的是\n换行符(行分割符号)

###############分割(自定义分割符号)######################
#
# 说明:多个\n连续如何一次性截断--->会产生多个空行(空格)
$e="ab\n\n\n";
# print $e;
# 说明:行分割符由$/(内置变量)来来定义!
$/="";
chomp($e);
print "chomp many $e\n";

#################分割##############################

$/="cd";
$f="abcd";
chop($f);
print "chop $f|";

$n="abcd";
chomp($n);
print "chomp $n|";

结果

chop abc
chomp abcd
chop abc|chomp abc|chommp many ab
chop abc|chomp ab|