perl学习基本语法
Posted huanm
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了perl学习基本语法相关的知识,希望对你有一定的参考价值。
一: 如何运行
在linux终端,直接输入 perl filenaem.pl
Perl脚本在解释执行时和shell脚本一样,自顶向下,跳过sub定义部分依次执行。
二:标量
1: 标量
可以是数字或者字符串;
数字分为浮点数,整数(允许分隔符)和非十进制;
2: 字符串(单引号字符串与双引号字符串)
单引号中的字符串:
除单引号和反斜杠字符外,单引号内所有字符都代表它们本身;例如 ‘\\n’代表\\和n两个字符;
‘\\’’表示单引号;‘\\\\’表示反斜线;
双引号中的字符串:
“\\n”代表换行符;
双引号字符串支持变量的内插;
$,@,",\\在双引号字符串中具有特殊意义,如果要在双引号字符串中表示这些字符,需要加上/;
3: 其他字符与字符串
‘\\\'\\\\’表示‘\\;
\\u:将字符大写;\\L:将字符小写
重复操作符:“bug”x3 #输出bugbugbug;
拼接操作符:“who” . "are" . "you" #输出who are you;
4: 标量的定义:以$开头;慎重使用Perl默认的一些变量:$ARGV,$_ $1,$2,...,$n,$$,$@,$?,$!
6: 双目操作符:
输出结果:
7: 标量内插
在双引号字符串中可以被内插,输出$符需要前面加转义\\,或者使用单引号字符串
eg:print “The price is \\$5.\\n”;
print \'The price is $5.\\n\';
如果要在变量内插后紧接着输出字母,数字或者下划线,可以使用花括号
eg:"Today is \\${year}_${month}_${day}\\n"; #如果存在$year_与$year,加上{}以区分
8: 操作符
**:幂操作符;
gt,ge,It,ne,cmp:比较操作符
++,--:++可用于字符串,但结尾字符为’z‘,’Z‘,\'9\'时进位;--不能用于字符串,如果用于字符串,需要将字符转化为数字。
9: undef(变量)
变量在未赋值之前,默认值未undef;
若被当作数字使用,会被视为0,若当作字符串使用,会被视为空串;
undef既不是数字也不是字符串;
有些操作符在参数越界或者不合理时,会返回undef;
10: defined(函数)
用来判断变量值是否未undef
三: 列表与数组
列表是集合,数组是存储列表的变量;列表指的是数据,数组指的是变量;列表的值不一定要放在数组里,但数组都一定包含一个列表。
1: 列表的定义与初始化
eg1:(5,8,9) #包含5,8,9三个数的一个列表;
eg2:(1..100) #包含1到100的一个列表
用qw符号定义单词列表:会将列表中的每一个元素当作单引号内的字符串
eg: qw(my name is peter);
2: 数组定义
@arg = (0,1,2,3);
可以用列表对数组赋值:(arg[0],arg[1])= qw/array list/;
四: 数组与列表操作符
1: pop()
取出数组中的最后元素,并返回该元素的值;作用于一个空数组时,什么也不做,返回undef。
2: push()
添加一个元素或者一串元素到数组的末尾
3: shift与unshift
shift取出数组的开头元素,并返回;
unshift添加一个元素或者列表到数组的开头
4: foreach:遍历列表中的值,依次迭代;若循环中修改了控制变量的值,也就修改了这个列表元素的值
这里的val是临时变量
5: reverse:读取列表的值,并按相反的次序返回该列表
6: sort:排序
输出:
7: 上下文与scalar(强制类型转换)
scalar函数:可以使用scalar函数强制制定标量上下文;例如:
输出:
scalar输出个数
五: 子函数(subroutines)
1: 定义
sub开头;可在程序任意位置定义;无需对子程序进行事先申明;当出现重名子程序时,后面会覆盖前面
2: 子程序调用(&+子程序名)
如&display();
3: 子程序参数(@)
@_是子程序的私有变量,在当前的子程序调用中,@总是包含了它的参数列表;例如
使用my声明私有变量,是局部变量。
4: 子程序返回值
最后一次的结果会被自动当成子程序的返回值(不是最后一个语句);
可以使用return操作符
5: 例子
输出:
6:即使传入的是数组,也是使用my($a,$b)=@_,后可以使用数组@a。
输出:
以上是关于perl学习基本语法的主要内容,如果未能解决你的问题,请参考以下文章
Perl基本语法实例,变量,数组,函数,if, for, while