为了写个通用的文件处理小脚本,不得不用perl来写了。第一天,头晕眼花,该死的my,local定义,该死的@qw就是数组,$qw就是变量,该死的文件循环方法,更更更该死的正则表达式。让我这个初次接触perl的人心灰意冷,奶奶的,我就不信了。
终于,放弃了复杂的编写,来个简单的吧先。先试下数据用
use strict;
use warnings;
use File::Copy;
my @arry1=(1,2,3,4,5,6,"weodf");
print $arry1[0],"/n";
原来也很简单嘛,跟其他脚本、编程语言没啥区别。
我张狂了,恩,开始我期待实现的程序了........
半个小时后.........蛋疼了,该死的文件夹操作
1个小时后 .........fuck,忍不了了,找个例子去
2个小时后 .........fuck,fuck,fuck。你这例子太缺德了吧。让我无从下手的该。竟然是遍历整个磁盘。附例子:
#!/usr/bin/perl -W
#
# File: lsr_s.pl
# Author: 路小佳
# License: GPL-2
use strict;
use warnings;
sub lsr_s($) {
my $cwd = shift;
my @dirs = ($cwd.'/');
my ($dir, $file);
while ($dir = pop(@dirs)) {
local *DH;
if (!opendir(DH, $dir)) {
warn "Cannot opendir $dir: $! $^E";
next;
}
foreach (readdir(DH)
N style="COLOR: #0000cc">) {
if ($_ eq '.' || $_ eq '..') {
next;
}
$file = $dir.$_;
if (!-l $file && -d _) {
$file .= '/';
push(@dirs, $file);
}
process($file, $dir);
}
closedir(DH);
}
}
my ($size, $dircnt, $filecnt) = (0, 0, 0);
sub process($$) {
my $file = shift;
print $file, "/n";
if (substr($file, length($file)-1, 1)eq '/') {
$dircnt++;
}
else {
$filecnt++;
$size += -s $file;
}
}
lsr_s('.');
print "$filecnt files, $dircnt directory. $size bytes./n";