我的perl学习笔记2
#### 标量数据
整数(如255,2001 等)和浮点数(有小数点的实数,如3.14159,1.35x1025),但在内部,Perl 都把它们当作双精度浮点数来处理
Perl 也允许使用非10 为底的数字。八进制以0 开头,十六进制以0x 开头,二进制0b 开头。
在十六进制中A 到F(或者a 到f)分别表示10 到15:
0377 #八进制数字377,等同于十进制数字255
0xff #十六进制数字FF,等同于十进制数字255
0b11111111 #等同于十进制数字255
当一个非十进制的数字超过4 位时,读起来将很困难。由于这个理由,Perl 允许你使用下划线来区分:
0x1377\_0B77
0x50\_65\_72\_7C
#### 数字操作符
2+3 #2+3,5
5.1-2.4 #5.1-2.4,2.7
3\*12 #3\*12,36
14/2 #14/2,7
10.2/0.3 #10.2/0.3,34
10/3 #通常是浮点除,3.33333… …
了模数运算符(%)。10%3 的值是10 除以3 的余数。
由两个\*号表示,如2\*\*3,表示2 的3 次方,等于8
最短的字符串不含任何字符。最长的字符串,可以填满整个内存。
单引号字符串中的\\n 不会被当作换行符来处理,其仅仅是两个字符\\和n。
双引号字符串和在其它语言类似。它也是字符的序列,不同点在于,其由双引号括起来的。现在,反斜线可以用来表示控制字符,或者八进制,十六进制数的表示。
串联必须由. 操作符进行。
一个特殊的操作符是字符串重复操作符(string repetition operator),由小写的字母x 表示。
这表示字符串重复操作符不是可交换的。
#### Perl 内嵌的警告(warnings)
```
$ perl–w my\_program
#! /usr/bin/perl –w
#! perl –w
#! /usr/bin/perl
use warnings;
#! /usr/bin/perl
use diagnostics;
```
标量变量的名字由一个美圆符号($)后接Perl 标识符:由字母或下划线开头,后接字母,数字,或者下划线。或者说由字母,数字和下划线组成,但不能由数字开头。大小写是严格区分的:变量$Fred 和变量$fred是不同的。任意字母,数字,下划线都有意义.
```
$fred = 17; #将17 赋给变量$fred
$barney =‘hello’; #将五个字母的字符串‘hello’赋给$barney
$barney = $fred + 3;# 将$fred 的值加上三赋给$barney (20)
$barney= $barney*2;#将变量$barney 乘2 再赋给$barney (40)
```
```
$fred = $fred + 5; #没有用二元赋值操作符
$fred+=5; #利用二元赋值操作符
下面的也是等价的:
$barney = $barney*3;
$barney*=3;
上述两例中,变量借助自身而非别的变量来改变自身的值。
另一个常用的赋值操作符是字符串连接符号(.);其赋值形式为(.=):
$str = str . “”; #$str 后接空格
$str .= “”’; #同上
print “hello world\n”; #输出hello world,后接换行符
print “The answer is ”;
print 6 * 7;
print “.\n”;
也可以将一串值赋给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; #同上
$fred = ‘hello’;
print “The name is \$fred .\n”; #打印出美圆符号,变量不会被其值替换
print ‘The name is $fred’. “\n”; #同上
```
$n = 3; print “fred ate $n $whats.\n”; #不是steaks,而是$whats 的值 print “fred ate $n ${what}s.\n”; #现在是使用变量$what print “fred ate $n $what”. “s.\n”; #另一种方法 print ‘fred ate ’. $n . ‘’. $what . “s.\n”; #一种复杂的方法
- 如果值为数字,0 是false;其余为真
- 如果值为字符串,则空串(‘’)为false;其余为真
- 如果值的类型既不是数字又不是字符串,则将其转换为数字或字符串后再利用上述规则。
```
if(! $if_bigger){
#当$if_bigger 非真时,运行此代码
}
```
行输入操作符(line-input operator),
```
$line = ;
if($line eq “\n”){
print “That was just a blank line!\n”;
}else{
print “That line of input was: $line”;
}
```
如果字符串结尾有换行符,chomp可以去掉它。
```
$count = 0;
while ($count < 10) {
$count + = 2;
print “count is now $count\n”; #打印出2 4 6 8 10
}
```
但undef 既非数字也非字符串,它是另一种标量类型。
```
#将一些基数相加
#n = 1;
while($n < 10){
$sum += $n;
$n +=2;#下一个奇数
}
print “The total was $sum.\n”;
```
要分辨其是undef 还是空串,可以使用defined 函数,它将在为undef 时返回false,其余返回true。
perl 学习笔记
更新于 2023年03月28日 20:53:54