怎么样在Perl中取得指定目录下的所有文件

怎么样在Perl中取得指定目录下的所有文件,第1张

有两种方法如果递归的找子目录可以用下面的files函数,只是找文件夹下面的glob就可以实现了

my @files

files('.', \@files)

print "$#files @files\n"

my @local

@local = glob("./*")

print "$#local @local\n"

sub files {

my $path = shift

my $arr  = shift

opendir(my $H, $path) || return

my @f = readdir($H)

close($H)

for my $f(@f) {

my $p = "$path/$f"

next if ($f =~/^[.]+$/)

if (-f $p) {

push @$arr, $f

}

else {

files($p, $arr)

}

}

}

前提,你windows下装了perl环境。 代码:test.pl 'c:\usrdirctory' 'd:\out.txt' 两个参数分别为:你要遍历的目录路径;你要保存有用信息的文件路径。 如果不方便用命令行调用的话,就写死在下面的$dir,$dst后面。 例如 $dir = 'c:\usrdirctory'...

还是昨天的那个程序,假设你的文件分为 1.txt 2.txt 3.txt,这个时候不要包含文件头,即所有的文件都是内容

程序修改为:

#$head = <>

while(<>)

{

@line = split(/,/,$_)

$lwfs = $line[7]

$user = join('|',$line[1],$line[2],$line[3],$line[4],$line[6],$line[7])

$info{$lwfs}{'times'} +=1

$info{$lwfs}{'users'}{$user} +=1

}

print "lwsf,user,times\n"

foreach my $key ( keys %info )

{

$times=$info{$key}{'times'}

@users = keys $info{$key}{'users'}

$usercount = $#users+1

print "$key,$usercount,$times\n"

}

注意:读取文件头到$head变量的那句已经注释掉了。

此时运行方法为: perl my.pl 1.txt 2.txt 3.txt 就可以了

perl自己会把所有文件内容都读进来处理的


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12038924.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存