Perl 批量删除过期文件(0 位领导批示)

代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/usr/bin/perl
 
#---------------------------------------------------------
use strict;
my $dir = "dirname/";
opendir DH, $dir or die "cannot chdir to $dir : $!";
for my $file (readdir DH)
{
    ($file eq '.') and next;
    ($file eq '..') and next;
    if (time() - (stat($dir.$file))[9] > (60*60))
    {
        unlink $dir.$file;
    }
    print $dir.$file."\n";
}
closedir DH;

然后创建一个计划任务进行处理.

这个代码中会将一小时前创建的文件删除.

时间可以进行修改 (60*60) 单位:秒

Perl学习之使用正则表达式处理文件(0 位领导批示)

可以通过正则表达式来改变文本。到目前为止,只介绍过怎么匹配模式。现在,我们将向你演示怎样通过模式来改变字符串中相应地部分。

一、使用s///进行替换

如果将 m// 这个模式匹配看作同文字处理器的 查询(search) 类似的功能,那Perl中 s/// 操作的则类似于 查询并替换(search and replace) 。它将替换变量中模式所匹配上的部分。


$_ ="我喜欢打球";
s/很喜欢/不喜欢/; #很喜欢被不喜欢替换掉
print "$_\n";

如果没有匹配上,则什么也不会发生,此变量也不会有任何更改。

s///会返回一个Boolean 值。如果成功替换则返回true;否则返回false。

1.使用 /g 进行全局替换

在前面的例子中你可能已经注意到,s///值进行一次替换,无论是否还有地方还能匹配上。当然,这只是默认的行为。修饰符 /g 要求s///将不相重叠的所有匹配上的部分都进行替换。


$_ = "哇,好大的棉花糖哇!";
s/哇/哟/g;
print "$_";

全局替换的一个常用地方是将多个空格用单个空格替换掉。

2.不同的分隔符

如同m//和qw//一样,我们也可以改变s///的分隔符。但这里使用了3个分隔符,因此有些不同。
通常的(非配对的)字符,由于没有左字符和右字符的区别,则可以像使用正斜线(/)那样使用。

如果使用的是配对的字符,也就是说其左字符和右字符不的,则必需使用两对:一对存放模式,一对存放替换的字符串。分隔符甚至可以是不同的。

全文阅读 »

随机显示的10篇日志

评论最多的10篇日志

浏览最多的10篇日志