数字
- Perl是弱类型语言, 这意味着一个变量的类型可以灵活的变化而不需要经过显式的类型转换(也意味着类型不安全)
- Perl把数字和字符串称为标量,存储标量的变量符号是$
- Perl内部所有的整型数和浮点数都被保存成“双精度浮点数”
- 可以在对数字变量赋值时插入下划线:num=123456789
- 行尾需要分号
- 支持指数表示法:smallnum = 2e-10 表示2X10的-10次方,一个很小的正数。
- 支持二进制、八进制和十六进制表示,在内部他们完全相同:
#! /usr/bin/perl
oct = 027;
dec = 23;
if(oct && hex && dec) {
print "They are equal to $dec";
}
字符串 - 单引号字符串内的每一个字符都表示它本身,which means不支持转义字符(除了单引号和反斜线这两个)
- 双引号引起的字符串内可以插入转义字符,也可以插入变量
- 字符串拼接:使用小数点 . : “first string”."second string" = "first stringsecond string", 有时候在print中也会使用逗号, 连接两个字符串,但那是传递给print一个由两个字符串组成的列表,而不是拼接成一个字符串
- 字符串复制:使用字母 x : “abc” x 3 = “abcabcabc”
- 字符串到数字的转换是自动的,主要是依据操作符和上下文环境来决定
调试
perl -w 或 perl -Mdiagnostics
输入输出: - 获取用户输入:<STDIN>,
- 内建函数chomp,去掉每行的换行符。函数直接修改传入的变量,返回值是移除换行符的个数
例程 #! /usr/bin/perl
@lines = ("abc\n", "def\n", "hij\n");
print "lines are @{lines}Modify". (chomp @lines). " lines. \nResult is @lines“;
OUTPUT:
lines are abc
def
hij
Modify3lines.
Result is abc def hij - 通常的用法:chomp ($input = <STDIN>)直接获得去除换行符的输入字符串
- 输出print 后接字符串或字符串变量。插入变量时如果发生歧义,可以用花括号把变量名括起来,例
years old”就会报错,
应该加上花括号 print “hello, I am ${year}s old";
布尔值和流程控制: - 数字0 为假,字符串‘0’ 等于数字0,为假
- 空字符串(‘’)为假
- 其余为真
- 字符串比较使用eq, ne, lt, gt, le, ge等价数字变量的==, !=, <, >, <=, >=
- if(布尔值或比较表达式){}else{}
- while(布尔值或比较表达式){}
undef变量和defined函数 - 未被赋值或未初始化的变量是undef,在使用时依上下文情况被视作数字0或空字符串‘’
- 但空字符串和数字0变量并不是undef
- defined函数返回一个布尔值,判断变量是否是undef
- 可以自己创建值为undef的变量 $a = undef;