什么是perl,它有什么用途?Perl最初的设计者意图是和字符打交道,它80%的长处都是和字符打交道。当然也可以用很多其他的。现在很多网页也是perl,通常需要CGI环境。
参考:http://shouce.jb51.net/perl5/
网站配置:https://www.jb51.net/article/74005.htm
Perl的基本语法,https://www.jb51.net/shouce/Perl.htm
什么是perl,它有什么用途?Perl最初的设计者意图是和字符打交道,它80%的长处都是和字符打交道。当然也可以用很多其他的。现在很多网页也是perl的,而且通常需要CGI环境,比如$char=~/language/,意思是找到一个包含“语言”这个词的字符串。它还可以做unix和linux系统管理,文件内容处理(基于awk和sed工具),以及许多其他你想做的事情。
一、perl环境配置
1.获取perl
Perl通常位于/usr/local/bin/perl或/usr/bin/perl中。你可以在网上通过匿名FTP免费获取,比如ftp://prep.ai.mit.edu/pub/gnu/perl-5.004.tar.gz.
2.安装过程是:
(1)减压:
$冈zip perl-5.004.tar.gz
$ tar xvf-perl-5.004.tar.gz
(2)编制:
$make makefile
(3)安置:
将编译生成的可执行文件复制到可执行文件通常所在的目录,例如:
$copy编译后的可执行文件/usr/local/bin/perl
3.操作
用文本编辑器编辑您的Perl程序,并添加可执行的属性:$chmod x program来执行它:$。/程序。如果系统提示:/usr/local/bin/perl not found ,说明你没有安装成功。请重新安装。
注意:你程序的第一行必须是#!/usr/local/bin/perl(perl所在的位置)。
4注意:
注释的方法是在语句的开头使用#字符,例如:
#这一行是注释
注意:建议经常使用注释,让你的程序易于阅读,这是一个很好的编程习惯。
二、常量、变量等问题
1.单引号和双引号
双引号内的字符串支持简单的变量替换,例如:$ text=此文本包含数字$ NUMBER。;
双引号内的字符串支持转义字符。
单引号字符串和双引号字符串有两个区别。一是没有变量替换功能,二是反斜杠不支持转义字符。
2.重复和连接
重复:打印 t x 5(将输出5个t,注意:其中x是英文字母小写x)
Join: $a.=bc (相当于join equals)
3.简单的变量、数组、列表
简单变量:用$声明,如:$ a= hello
数组:用@声明,如:@arr=(a , b , c );
List:list是包含在括号中的一系列值,可以是任意数值,也可以为空,比如:(1,5.3, hello ,2),空list:()
三、文件操作
1.打开文件:如open(我的文件, file1) || die(打不开文件);MYFILE是声明的文件句柄,file1是文件名/文件路径。整行代码的意思是:如果打开失败,输出‘无法打开文件’;
关闭文件:文件操作完成后使用close(my file);关闭文件。
阅读文件
语句$ line=MYFILE从文件中读取一行数据,将其存储在简单变量$line中,并将文件指针向后移动一行。STDIN是一个标准的输入文件,通常是键盘输入,不需要打开。
Statement @ array=MYFILE将文件的所有内容读入数组@array,文件的每一行(包括回车)都是@array的一个元素。
#!/usr/bin/perl
open(MYFILE, 1 . txt );
@ arr=MYFILE
print @ arr
写文件
形式是:
open(OUTFILE, OUTFILE );
print OUTFILE(这里是输出行。 n’);
注意:STDOUT和STDERR是标准输出和标准错误文件,通常是屏幕,不需要打开。
4.判断文件状态。
1.文件测试操作符
语法是:-op expr,例如:
if (-e /path/file1) {
打印STDERR(文件file1存在。 n’);
}
文件测试操作符
操作员
形容
-乙
是块设备吗?
-丙
是字符设备吗?
-d
它是一个目录吗?
-e
存在吗?
-f
是正常文件吗?
-g
setgid位设置了吗?
-k
粘性位设置了吗?
-我
是符号链接吗?
表示“具有…性质的”
你拥有这份文件吗?
-p
是管道吗?
-r
它可读吗
构成名词复数
不是空的吗?
相当于-ED
指示终端是否
-你
setuid位设置了吗?
-w
可写吗?
加在以-u结尾的法语词源的名词之后构成复数
是否可执行?
-z
这是一个空文件吗
构成动植物的古名或拉丁化的现代名
自从上次访问以来有多长时间了
-乙
是二进制文件吗?
-丙
自上次访问文件的信息节点以来,已经过了多长时间?
-M
距离上次修改有多久了?
表示“具有…性质的”
是不是只有“真正的用户”拥有
-R
只有“真正的用户”才可读吗
构成名词复数
是插座吗
相当于-ED
它是一个文本文件吗?
-W
只有“真实用户”是可写的吗?
加在以-u结尾的法语词源的名词之后构成复数
它只能被“真正的用户”执行吗
注:“真实用户”是指登录时指定的userID。与当前进程用户id相比,suid命令可以改变有效的用户ID。
示例:
除非(open(INFILE, INFILE ){
无法打开文件中的die(输入文件。 n’);
}
if (-e outfile) {
die(输出文件outfile已经存在。 n’);
}
除非(open(OUTFILE, OUTFILE ){
无法打开die(输出文件outfile。 n’);
}
等于
open(INFILE, INFILE )!(-e outfile )
open(OUTFILE, outfile) || die(无法打开文件 n );
四、模式匹配:
1.概念:模式是指字符串中特定的字符序列,由反斜杠:/def/包含,即模式def。其用法如下:结合split函数将一个字符串按照一定的模式分割成多个单词:@array=split(//,$ line);
2.匹配运算符=~,~
=~检查匹配是否成功:$ result=$ var=~/ABC/;如果在字符串中找到该模式,它将返回一个非零值,即true如果不匹配,则返回0,即false。~事实正好相反。
五、控制结构
(1)条件判断:if()else if()else();
(2)流通:
1.while循环
2.直到循环
3.for循环
4.列表中每个元素的foreach循环(数组)
open(MYFILE, 1 . txt );
@ arr=MYFILE
foreach $str (@arr){
打印$ str
}
5.做循环
6.循环控制:出口循环是最后一个,与C中的break作用相同;将下一个循环执行为next,与C中的continue效果相同;PERL特有的一个命令是redo,就是重复这个循环,也就是循环变量保持不变,回到循环起点。但是,应该注意,重做命令在do循环中不起作用。
7.传统的goto语句:goto标签;
(3)单线条件
语法是语句关键字condexpr。其中关键字可以是if、never、while或until,例如:
打印(这是零。 n )if($ var==0);
打印(这是零。n )除非(var!=0);
打印(还不为零。 n )while($ var-0);
打印(还不为零。n )直到($ var-==0);
条件判断虽然写在后面,但是先执行。
不及物动词子程序
(1)定义
子程序是执行特殊任务的一段单独的代码,它可以减少重复代码并使程序可读。在PERL中,子例程可以出现在程序的任何地方。该方法定义为:
子程序{
声明;
}
(2)打电话
方法如下:用调用
subname
.
sub subname{
.
}
七、文件系统
:与unix密切相关,参考:http://shouce.jb51.net/perl5/perl11.htm其他:
Pipeline:可以使用前面执行的结果作为下面的参数,比如
环境| grep编辑器
您可以删除环境变量中EDITOR的值