标量数据
Perl 内部没有整数值。程序中的整数被当做等价的浮点数来处理
1.浮点数
2.整数
Perl 允许用下划线来分隔它
61298040283768 61_298_040_283_768
3.非十进制整数
0377 #八进制数字377,等同于十进制数字255
0xff #十六进制数字FF,等同于十进制数字255
0b11111111 #等同于十进制数字255
4.数字操作符
Perl 除了提供通常的操作符加(+),减(-),乘(*),除(/)
还提供了模数运算符(%)。10%3 的值是10 除以3 的余数。两个操作数首先变成它们对应的整数值,如10.5%3.2 转换为
10%3◆后再计算。另外,Perl 中提供了和FORTRAN 类似的指数操作符,C 和Pascal 很希望有类似的能力。这个操作符由
两个*号表示,如2**3,表示2 的3 次方,等于8
4.字符串
和C,C++不同,Perl 中NUL 字符没有特殊的含义。Perl 能计算长度,不用靠null 来判断字符串是否结束
双引号字符串中的转义符
符号含义
\n 换行
\r 回车
\t 制表符
字符串可由. 操作符连接(是的,只是一个点) 。
可供以后使用:
“hello”. “world” # 同于“helloworld”
“hello”. ‘’. “world”#同于“hello world”
‘hello world’. “\n” #同于“hello world\n”
一个特殊的操作符是字符串重复操作符(string repetition operator),由小写的字母x 表示
“fred”x 3 # “fredfredfred”
“barney”x (4+1) # “barney”x 5, “barneybarneybarneybarneybarney”
5 x 4 #实际上是“5”x 4, “5555” 。字符串重复操作符需要一个字符串作为左操作数,因此数字5 被转变为字符串“5”
5.数字和字符串之间的自动转换
大多数情况下,Perl 将在需要的时候自动在数字和字符串之间转换.
大多数情况下,Perl 将在需要的时候自动在数字和字符串之间转换。它怎样知道什么时候需要字符串,什么时候需要数字
呢?这完全依赖于标量值之间的的操作符。如果操作符(如+)需要数字,Perl 将把操作数当作数字看待。如果操作符需要
字符串(如. ),Perl 将把操作数当作字符串看待。不必担心数字和字符串的区别;使用恰当的操作符,Perl 将为你做剩下
的事。
当在需要数字的地方使用了字符串(如,
“12”* “3”将给出36
后面的非数字部分和前面的空格将被去掉,如“12fred34”* “3”将给出36 而不会 用任何提示◆。在极端情形,当一个不含任何数字的字符串将别转换为0。如,将“fred”当作数字来使用时。
同样,如在需要字符串的地方使用了数字(如,字符串连接),数字将转换为字符串
“Z”. 5 * 7 #同于“Z”. 35,或“Z35” 看需要
6.Perl 内嵌的警告(warnings) perl -w myfile #!/usr/bin/perl -w
#! /usr/bin/perl
use diagnostics;
二.标量变量 :标量变量的名字由一个美圆符号($)后接Perl 标识符
二元赋值操作符
四.
print 输出
也可以将一串值赋给print,利用逗号分开:
print “The answer is ”,6*7, “.\n”;
五:字符串中标量变量的内插:当一个字符串由双引号括起来时,如果变量前没有反斜线,则变量会被其值内插
$mean = “brontosaurus steak”;
$barney = “fred ate a $meal”; #$barney 现在是“fred ate a brontosaurus steak”
$barney = ‘fred ate a’. $meal; #同上
从上面得知,不使用双引号也可以得到相同的结果。但使用双引号更方便些。
变量名将是字符串中有意义的最长的那一个。这可能在当你需要在某次匹配就替换的情况下出问题。Perl 提供了一种类似
于shell 的分隔符:花括号({})
数字和字符串的比较运算符
比较关系数字字符串
相等= = eq
不等!= ne
小于< Lt
大于> gt
小于或等于<= le
大于或等于>= ge
if($name gt ‘fred’){
print “‘$name’comes after ‘fred’in sorted order.\n”;
}else{
print “‘$name’does not come after ‘fred’.\n”;
print “Maybe it’s the same string, in fact.\n”;
}
花括号是必须的
$is_bigger = $name gt‘fred’;
if($is_bigger){… }
标准输入流在行中间就结束了。当然,普通的文本文件通常不是这样。
$line = ;
if($line eq “\n”){
print “That was just a blank line!\n”;
}else{
print “That line of input was: $line”;
}
实际上,通常你不需要保留换行符,因此需要chomp 来去掉它。chomp 是一个函数。作为一个函数,它有一个返回值,为移除的字符的个数。这个数字基本上没什么用:
$count = 0;
while ($count < 10) {
$count + = 2;
print “count is now $count\n”; #打印出2 4 6 8 10
}
条件中真假值的判断和if 结构中是一样的。和if 控制结构相同,花括号是必须的。判断条件在迭代前执行,如果条件为假,
defined 函数
阅读(645) | 评论(0) | 转发(0) |