现在,我们的perl系列已经用两个例子解释了六次。能自己写剧本吗?
那么问题来了!在读取和生成文件之前,我们需要判断目标文件是否存在,或者需要获取文件权限等信息;此外,我们还将创建和删除工作目录,这涉及到文件测试和目录操作。
Perl 008 Fast Series针对没有Perl编程经验或没有Perl语言的初学者,介绍Perl的基础知识和实际编程技巧。晨光一路伴随你,轻松点亮编程技能,成为代理级Perl程序员!
Perl 008快速系列-数据结构介绍
Perl 008快速系列-哈希和子函数
变腐朽为神奇,编程语言不能错过的正则表达式
精解的例子!如何从海量序列信息中提取目标序列
Perl 008快速系列-字符串操作和排序
“实际案例”!如何用perl写一个裁剪序列的脚本?》
Perl输入输出怎么写?如何使用控制结构?就看这个吧!》
这一部分包括用Perl语言进行文件测试和目录操作。
一、文件测试
1.文件测试操作符
Perl为测试文件提供了一组操作符来返回特定的文件信息。大多数测试运算符返回布尔值。例如,可以使用-e测试运算符来测试文件是否存在,而-M测试运算符返回文件的最后修改时间与当前程序的开始时间之间的天数。代码如下:
去死吧“哎呀!名为“$filename”的文件已经存在。如果;
#检查文件$filename是否存在
警告“配置文件看起来很旧!”如果;
#检查配置文件的最后修改时间是否超过28天
这里我们列出了常用的文件测试操作符及其含义,供大家学习:
表1 .文件测试操作符及其含义
2.堆栈文件测试操作符
如果我们想同时测试多个文件属性,我们可以分别测试它们,例如:
如果{...}
或者:
如果{...}
下划线是虚拟文件句柄,告诉Perl将最后查询到的文件信息用于当前测试,节省了重复读取文件信息的时间。
一次测试多个属性不是更容易吗?Perl 5.10开始允许使用“堆栈”编写来排列文件测试操作符并同时测试多个属性:
使用5.010;
如果{
打印“我的目录是可读的、可写的和可执行的!”;
}
3.统计函数
Perl下的stat函数和shell下的stat命令的功能基本相同,都是获取文件的各种具体信息。stat函数返回一个数组。以下是数组中每个元素的含义:
表2 .stat返回格式及其含义
4.localtime函数
localtime函数可以根据其上下文以两种完全不同的方式运行。在标量上下文中,localtime函数返回格式良好的当前时间字符串:
表3 .localtime返回格式及其含义
例如:
#!/usr/bin/perl
my =;
= ,
sprintf,
sprintf,
sprintf,
sprintf,
$year + 1900
);
打印" $ year-$ mon-$ mday $ hour:$ min:$ sec/n ";
运行结果:
2017-11-1213:37:31/n
二、目录操作
Perl默认在当前的工作目录下操作,但是有时候我们想改变工作目录,所以可以直接操作目录。
1.在目录树中移动
我们可以使用chdir函数来切换当前的工作目录,这需要足够的权限。
例子如下:
#!/usr/bin/perl
$ dir = "/home ";
#将当前目录移动到/home目录
Chdiror die "无法将目录切换到$dir,$!";
打印“您现在所在的目录是$ dir”;
运行结果:
您当前的目录是/home
2.显示所有文件
如果我们想显示当前目录中的所有文件,我们可以使用glob操作符来实现:
#!/usr/bin/perl
#显示/tmp目录中的所有文件
$ dir = "/tmp/*;
my @ files = glob
foreach{
打印$_。" ";
}
3.目录句柄
如果我们想从目录中获得文件名列表,我们还可以使用目录句柄:
#!/usr/bin/perl
Opendir或die“无法打开目录,$!”;
# openDIR打开目录句柄目录
while {
#readdir获取目录中的文件列表
打印“$ file”;
}
closedir DIR
#关闭目录句柄
4.创建和删除目录
我们可以用mkdir函数创建一个目录,或者用rmdir函数删除一个目录,执行之前需要有足够的权限:
mkdir 'fred ',0755或warn "Cannotmake fred目录:$!";
foreach my$dir ) {
rmdir $dir或warn "不能rmdir $dir: $!";
}
PS: 0755表示创建目录时的初始权限
5.删除和重命名文件
我们通常会删除文件。在Perl中,我们可以使用unlink函数来实现:
解除“板岩”、“基岩”、“熔岩”的链接;#删除三个文件
或者使用qw列出文件,即:
取消qw链接;
PS: unlink只能用于删除文件,不能用于删除目录。其返回值表示成功删除的文件数。
此外,我们还可以使用重命名功能来重命名:
将“旧”重命名为“新”
6、修改权限和隶属关系
我们知道Linux系统中的chmod和chown命令可以分别用来修改文件和目录的权限和隶属关系。Perl中对应的chmod和chown函数具有相同的功能。
chmod 0755,' fred ',' Barney ';#修改文件的权限是0755
my $ user = 1004
my $ group = 100
chown $user,$group,glob '*。o ';#修改以'结尾的所有文件的所有者和组。的
函数的作用是:返回成功修改的文件数
处理输入问题是程序正常运行的首要条件。在这里,我尽量简洁地介绍一下常见的文件测试和目录操作。由于篇幅有限,难以深入解释。我想把这篇文章发给我对Perl不熟悉的朋友。
下节课,我们来谈谈perl模块的安装和使用,请注意!
参考文献: