perl标量数据

2016-12-12 10:15:11来源:作者:工学1号馆人点击

第七城市

perl使用标量来称呼单个事物,标量是perl中最简单的一种数据类型,标量大部分要么是数字要么是由字符组成的序列

数字

所有的数字内部格式相同,在perl内部总是按照双精度浮点数的要求保存数字并进行运算的,也即是perl内部不含整数值,程序中用到的整数常量会被转换成等效的浮点数值

浮点数直接量:小数点与前置的正负号都是可选的,数字后面可以加上'e'或'E'表示10的幂

perl 允许你在整数直接量中插入下划线,将若干位数分开,例如:123_456_789

八进制数以0开头,十六进制数以0x开头,二进制数以0b开头

接着写一个小程序实践一下:

#! /usr/bin/perlprintf "%f/n", -1.25;printf "%f/n", 1.25e20;printf "%f/n", 1.25e8;printf "%f/n", -1.25e-3;printf "%f/n", -1.25E2;printf "%d/n", 123_322_341_6778;printf "------------------/n";printf "%d/n", 0377;printf "%d/n", 0xff;printf "%d/n", 0b11111111;printf "------------------/n";printf "%d/n", 10.2%3.1;printf "%f/n", 10.2%3.1;printf "%d/n", 10%3;printf "%d/n", 3**2;

编译运行:

wu@ubuntu:~/perl$ chmod a+x num.pl

wu@ubuntu:~/perl$ ./num.pl

-1.250000

125000000000000000000.000000

-125000000.000000

-0.001250

-125.000000

1233223416778

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

255

255

255

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

1

1.000000

1

9

字符串操作

字符串可以使用. 操作符连起来组成一个新的字符串,原来的字符串不变

字符串重复操作符:str x n,将x左边的字符串str重复指定n次

先来一个程序验证一下

#! /usr/bin/perl$s1 = "hello ";$s2 = "wuyudong/n";$s3 = $s1.$s2;print $s1;print $s2;print $s3;printf "%s/n", 5x4;

运行

wu@ubuntu:~/perl$ ./string.pl

hello wuyudong

hello wuyudong

5555

数字与字符串之间的自动转换

perl会根据需要自动在数字与字符串之间转换,主要取决于中间的操作符,你不必担心数字和字符串之间的差异,只管合理使用操作符,perl来搞定剩下的工作

来个例子:

#! /usr/bin/perlprintf "%d/n", 0377;print "0377/n";printf "%s/n","z".5*7x4;

运行

wu@ubuntu:~/perl$ ./num1.pl

255

0377

z35353535

标量变量

变量以$打头,大小写敏感;如果启用utf8你、编译指令,就可以使用非ASCII字符来作为变量名

字符串中的标量变量内插

将字符串内出现的所有标量变量替换成当前的值,如果标量没有被赋值过,就会用空字符串来替换

当进行内插时,perl会尽可能使用最长且合法的变量名称,有可能会引起歧义,举个例子:

#! /usr/bin/perlprint "the answer is ",2*4,"./n";$s1 = "wu ";$s2 = "yudong";print "my name is $s1$s2/n";print "my name is ".$s1.$s2."/n";print "------------------------/n";$what = "brontosaurus steak";$n = 3;print "fred ate $n $whats./n"; #这里替换的是$whats,未定义,为nullprint "fred ate $n ${what}s./n"; #比较常用的方法,使用{}print "fred ate $n $what"."s./n"; #另一种方法,比较麻烦print 'fred ate ' . $n .' '. $what."s./n"; #最麻烦的写法

编译运行

wu@ubuntu:~/perl$ ./string.pl

the answer is 8.

my name is wu yudong

my name is wu yudong

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

fred ate 3 .

fred ate 3 brontosaurus steaks.

fred ate 3 brontosaurus steaks.

fred ate 3 brontosaurus steaks.

数值与字符串比较操作符:

比较 相等 不等 小于 大于 小于或等于 大于或等于 数字 == != < > <= >= 字符串 eq ne lt gt le ge 获取用户输入

让perl程序读入输入的值,使用“行输入”操作符<STDIN>,放在程序希望的位置上

#! /usr/bin/perlprint "what's your name?/n";$name = <STDIN>;if($name eq "/n") { printf "this is just a blank line!/n";} else { printf "your name is: $name!";}

编译运行

wu@ubuntu:~/perl$ ./string.pl

what's your name?

wuyudong

your name is: wuyudong

chomp操作符

chomp的作用很单一,就是将单个字符变量的末尾的换行符去掉

undef值

当变量首次赋值前的初始值是undef值(未定义)

当数字用的时候是0,当字符串用的时候是空字符串,但undef既不是数字也不是字符串,而是另一种类型的标量值。举个例子:

#! /usr/bin/perl$n = 1;while($n < 100) { $sum += $n; #sum未定义 $n++;}print "the total is $sum./n";$string .= "more text/n"; #string未定义print $string;

编译运行

wu@ubuntu:~/perl$ ./test1.pl

the total is 4950.

more text

第七城市

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台