写在最前面:所有的博文都是为了若干年月以后当我再次翻看可以快速回想起之前的零星知识。学海无涯,在看这篇文章的未来的你,加油吧!
一、数据类型
Perl有三种基本数据类型:标量($xxx)、数组(@xxx)和哈希(%xxx)。举个栗子:
#标量first_xxx,需要加$
$first_num = 123;
$first_str = "Hello World";
#数组second,需要加@
@second = (1,2,3);
#哈希third,需要加%,哈希为key/value对,key对应相应的value
%third = ('a'=>1, 'b'=>2);
对于哈希类型的变量,我们还可以对其添加新的元素和删除旧的元素,我们再举个栗子。
#定义哈希变量TEL
%TEL = ('WangXinLing'=>123456789, 'LiuLian'=>987654321, 'ZhangLi'=>795312468);
#添加新元素XueKaiQi
$TEL{'XueKaiQi'} = 842697315;
#删除元素LiuLian
delete $TEL{'LiuLian'};
二、输出与输入
2.1输出print
print("xxx"):打印其中相应的内容。下面继续举栗子:
#变量val
$val = 123;
#数组arr
@arr = (0,1,2,3,4,5,6);
#打印变量val
print("$val");
#打印数组arr内的元素
print("@arr");
2.2输入<STDIN>
<STDIN>:读入所输入的字符。下面是个栗子(某知名芯片设计公司的笔试题哈哈哈)
%name = ('Li'=>'Fei','Liu'=>'Qiang','Zhang'=>'Ming','Tian'=>'Hua');
$val=<STDIN>; #会读入一个换行符
chomp($val); #chomp函数用于去掉字符串或者读取到的标准输入的一个换行符
print("$name{$val}");
用cmd打开该pl文件的目录,并运行该脚本,输入Li,输出Fei,如下图所示。
三、正则表达式
Perl的正则表达式的三种形式,分别是匹配,替换和转化。
匹配(m//,还可以简写为//,略去m): 用于匹配一个字符串语句或者一个正则表达式。举个栗子。
#定义字符串
$string = "Can you make a big smile ?";
#匹配字符", you",使用~m//
$string =~m/ you /;
perl处理完后会给匹配到的值存在三个特殊变量名:
$`: 匹配字符串的前一部分字符串
$&: 匹配的字符串
$': 匹配字符串后面剩下的字符串
我们还是用上面的栗子来说明这三个变量的含义。
print("before: $`\n"); #打印所匹配的字符之前的字符串
print("matched: $&\n"); #打印所匹配的字符串
print("after: $'\n"); #打印所匹配的字符之后的字符串
打开cmd,运行该脚本可以得到下图:
替换(s///): 用新的字符串替换指定的字符串。
转化(tr///): 将指定字符串转化为特定字符串。
大小写转换(uc()/lc()): 将指定字符串全部变为大写或小写。
我们用下面的代码来说明上面三个表达式的作用。
$string = "Can you make a big smile ?";
$string_big = "DO YOU WANT TO BUILD A SNOWMAN ?";
$string_substitute = "Come on, Let's go and play";
$string_trans = "I never see you anymore";
#全部转换为大写,使用uc()
$string = uc($string);
print("$string\n");
#全部转换为小写,使用lc()
$string_big = lc($string_big);
print("$string_big\n");
#替换第一个字母o为O,使用s///
$string_substitute =~ s/o/O/;
print("$string_substitute\n");
#转换全部字符e为E,使用tr///
$string_trans =~ tr/e/E/;
print("$string_trans\n");
使用cmd运行该脚本,可以得到结果如下所示。
参考文献: