Perl(四)基本的数据类型

一、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

双引号中的转义字符

练习

# (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)表示引号的含义

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

(6)变量的初始值

分析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|

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值