一、简介
Perl(Practical Extraction and Report Language),是一种高级、通用、直译式、动态的程序语言,最具代表性的为正则表达式,也称实用报表提取语言。
二、标量数据
1.标量数据分为数字和字符串。
2. 数字
- 所有数字的内部结构都一样:整数和浮点数在Perl内部都是以双精度浮点数的要求来保存数据并进行运算的。
-
直接量(代码中直接键入的数据)的写法
1.浮点数直接量:1.25; 255.000;-6.5e24
2.整数直接量:0; 2001; -30; 23_1111_7763(可下划线区分)
3.非十进制的整数直接量:
o377 #八进制--255
0xff #十六进制--255
0b11111111 #二进制--255//前置0
- 数字操作符:
+ - * / %(取模) **(取幂)
取模:先取整数再求余
eg: 10.5%3.2等效于10%3
2**3---2的三次方
3. 字符串
- 字符串通常是由可输出的字母,数字及标点符号组成。
- 如果要看到源代码出现ASCII字符范围以外的字符,需要加以下编译指令:
use utf8 #Unicode编码
- 字符串直接量
1.单引号内的字符直接量
除了单引号和反斜杠字符外,单引号内所有字符都代表他们自己,而要表示单引号或反斜杠,需要在此符号前加入反斜杠字符表示转义。
' fred ' #共四个字符
‘ \’\\ ' #单引号和反斜杠两个字符
2.双引号内的字符直接量
双引号的反斜杠更为强大,可以转义许多控制字符或者用八进制或十六进制写法来表示任何字符。
" coke\tsprite " # coke、制表符(tab)和sprite
3.双引号内字符串的常见反斜线转义
组合 意义
\n 换行
\r 回车
\t 水平制表符
\f 换页符
\b 退格
4.字符串操作符
. #句号操作符,连接操作符
eg: "hello" . "world" # 等同于"helloworld"
x #字符串重复操作符
eg: "fred"x3 # "fredfredfred"
eg: 5x4.8 # "5555",先将数字5转换成字符串"5"
且有操作数在使用前会先取整(4.8变成4)
重复次数小于1时,会生成程度为0的空字符串
3. 数字与字符串间的自动转换
自动转换完全取决于操作符
"12" *"3" #36
"12fred34" * "3" #也是36
‘o377’ #十进制377,"自动转换总是按照十进制数字来处理"
前置0的技巧只对直接量有效,不能用于字符串的自动转换
4. Perl内置警告信息
法一: use warnings; # 能够指定代码的作用范围
法二: perl -w my_lab.plx #此法对所有涉及代码都开启警告功能
法二也可以写成: "#! /usr/bin/perl-w"
法三: use diagnostics
5. 标量变量
- 变量: 储存一个或多个值的容器的名称。
- 标量变量:单单存储一个值的变量。
- 标量变量的名称以美元符号开头:$,区分大小写
- 组成:由字母或下划线开头,后接多个字母数字或下划线
$name
$Name #两者为不同变量
6. 赋值
$fred = $fred + 5 ;
$fred += 5 ; #两者等效,双目赋值操作符
$str = $str . " " #在str的末尾追加一个空格字符
$str .= " " #作用同上
$barney = " fred ate a $meat " #如果meat未被赋值过,用空字符来替换
print "$barney" #双引号是多余的
print $barney #变量内插又叫双引号内插
print "The name is \$barney.\n" #会输出$符号
print ' The name is $barney '."\n" #效果同上
$what = steak ;
$n = 3 ;
print "fred ate $n $whats .\n" ;此处引用的是$whats的值,而不是what
print "fred ate $n ${what}s .\n"
7. 借助代码点创建字符
键入一些键盘上没有的那些字符,可以直接键入这些字符的代码点,再通过chr()函数转换成对应字符。
$alef = chr( 0x05D0 )
$alpha = chr( hex('03B1') ) ;
$code_point = ord('?');
"$alpha$omega"
"\x{03B1}\x{03C9}" #如果不预先创建变量,也可以在双引号内用\x{}的形式
8.比较操作符
大于或等于:>=
小于或等于:<=
<>,=>在perl里都有别的意义。
数值与字符串的比较操作符
比较 数字 字符串
相等 == eq
不等 != ne
小于 < 1t
大于 > gt
小于或等于 <= 1e
大于或等于 >= ge
9. 布尔值
数字:0为假,所有其他数字都为真
字符串:空字符串为假,其他字符为真
既不是字符也不是数字;先转换成字符或数字再进行判断
字符串'0'跟数字0是同一个标称值 # "因为自动转换都是以十进制进行转换的"
10. 获取用户输入
行输入操作符<STDIN>:直到换行符为止 。
$line = <STDIN>
chomp( $text = <STDIN> ) ; # 读入文字,略过最后的换行符
11. undef值
首次赋值前:变量值的初始值就是特殊的undef值,既不是数字,也不是字符串,他完全是另一种类型的标称值。
判断某个字符串是undef而不是空字符串
$madonna = <STDIN>
if ( defined(madonna) )
$m = undef # 自己创造undef值,回到从未用过的状态