一、perl基本要素:数字和字符串
perl语言的核心是正则表达式,在文本处理上非常有优势,与python类似,但语法不同,perl的语法很灵活,用多了才会觉得好用。
第一篇博文就这么潦草的结束,慢慢摸索,希望这是一个开始
文章目录
- 一、perl基本要素:数字和字符串
- 标量常量:数字 和 字符串
- 标量变量:存放标量
字符串
只有使用转义字符才能在字符串中插入特殊的字符。
- 单引号:‘ ’中的每个字符都表示它本身,$a, \n等等,都不会进行处理,原样输出。
- 双引号:“ ”中Perl会查看是否存在 变量名 和 转义序列,一旦发现,会自动替换。
如何便捷的将字符串用 双引号 或 单引号 括起来?
- qq运算符:qq(I said, “I love you!”) 用法如上 q运算符: q(Tom’s tree)
- 用法与之前单引号一样,会原样输出单引号内的所有内容。
标量变量
- 特殊变量($_):当前默认值
运算符(运算符之间可以有空格)
数字运算符有哪些?
- 加+;减-;乘*;除/;求余%;取幂**;
字符串运算符有哪些?
- 并置运算符(.)(运算对象必须为字符串标量或者标量变量)
- 可以使用反斜杠\,指定屏蔽字符串内的内插替换(标量变量和转义字符)
- 如果字符串中标量名和字符串过于紧密,可以用{}显示指定变量名,如${name}space
- 重复运算符(x),如“-”x 10;
例如,
如果操作数属于混合类型(譬如数字与字符串),Perl 会首先判断运算符期望的操作数类型,然后作相应的类型转换。这个过程又称为运算符重载(overload)。
如果运算符是数值型的(如代数运算符),而操作数却是字符串的话,Perl 将把该字符串转换为相应的十进制浮点数。未定义的字符串值会转换为数字 0。如果字符串首部拥有空格前缀,或者末尾带有非数字字符的话,Perl 会忽略它们。如果某个字符串无法转换为相应数字的话,Perl 会将其变成 0。
(示例):
$string1 = "5 dogs ";
$string2 = 4;
$number = $string1 + $string2; # Numeric context
print "Number is $number.\n"; # Result is 9
同样,如果 Perl 碰到了字符串型运算符,而相应操作数是数值型的话,便会将数字转换为字符串进行处理。例如,下面使用了连接运算符,负责把两个字符串连接到一起。
(示例):
$number1 = 55;
$number2 = "22";
$string = $number1 . $number2; # Context is string
print "String is $string.\n" # Result is "5522"
代码如下(示例):
(The Script)$x = " 12hello!!" + "4abc\n";
# Perl will remove leading whitespace and trailing non-numeric
# charactersprint "$x";print "\n";$y = ZAP . 5.5;print "$y\n";
(Output)16ZAP5.5
解释:
- 加号(+)是一个数值运算符。字符串“ 12hello”和“4abc\n”会转换成数字(需去除其空格前
缀和末尾的非数字字符),然后再执行加法运算。其运算结果存储到标量 $x 中。 - 打印标量 $x。
- 由于在转换成数字时会把 \n 从字符串 4\n 中去除,因此在打印时需要提供另一个换行符 \n。
- 点号(.)左右都是空白字符,因此它是一个字符串运算符,作用是连接两个字符串。在本行
中,数字 5.5 将先转换成字符串,然后和另一个字符串 ZAP 连接在一起。 - 打印标量 $y 的值。
尖括号运算符?
- 用于读写文件,,从标准输入读入一行;默认会读入我们最后输入的回车,可以使用从chomp运算符去掉;
- chomp可以去除任何参数结尾的换行符,返回被删除的字符数(删除了返回1,没删除返回0)。
示例: 把输入内容赋值给标量型变量
当从文件句柄 STDIN 读取输入内容时,倘若上下文语境是标量型,程序将每次读取输入的一行(包括换行符),并将其内容作为单个字符串赋予标量型变量。
代码如下(示例):
(The Script)# Getting a line of input from the keyboard.
print "What is your name? ";
$name = <STDIN>;
print "What is your father's name? ";
$paname=<>;
print "Hello respected one, $paname";
(Output)
What is your name? Isabel
What is your father's name? Nick
Hello respected one, Nick
解释:
- 把字符串 What is your name? 发送给 STDOUT 文件句柄,该句柄默认指向终端屏幕。
- 位于输入运算符 <>(又称方块运算符)中的 STDIN 读取一行输入,并把这一行内容及其末
尾的换行符赋值给变量 $name。在把输入内容赋予标量型变量时,程序会一直读取输入字符
直到用户按下 Enter 键。 - 把字符串打印到 STDOUT 文件句柄。
- 如果输入运算符是空的,则从 STDIN 读取下一行输入内容,其行为与上述第 2 步相同,只
不过这次是将输入值赋予 $paname。