×

perl读取文件夹下所有文件

perl读取文件夹下所有文件(perl打开文件夹文件)

admin admin 发表于2023-03-31 23:25:08 浏览47 评论0

抢沙发发表评论

本文目录一览:

perl如何批量提取所有文件固定位置内容到另一个文件

use strict;

findfile;

sub findfile

{

    my $some_dir = "c:/tmp/a";

    

    opendir(my $dh, $some_dir) || die "Can't open $some_dir: $!";

    while (my $fn = readdir $dh) {

        next if ($fn eq '.');         # 跳过两个系统目录

        next if ($fn eq '..');

        next if ($fn =~ /^~/);         # 看情况是否需要跳过其它文件

        next if (!($fn =~ /\.txt$/));

        

        print "正在分析文件[$fn]\n";

        check_file("$some_dir\/$fn");  # 依次检查每一个文件

    }

    closedir $dh;

}

sub checkfile

{

    my $fn = shift;

    open FILE, "$fn";

    

    foreach my $line (FILE)

    {

        chop($line);

        next if ($line !~ /^检测/);        # 跳过不是“检测”两字开头的行

        

        if ($line =~ /# (.*V) #/)          # 判断是否有"# xxxV #" 字样的字符串

        {

            #如果有,则$1的内容为上面小括号的内容,如“3.27V”

            my $data = $1;

            # 然后你想将$data放哪?

            print "[$data]\n";

        }

    }

    close FILE;

        

}

perl 读取文件夹下所有txt,并处理数据

还是昨天的那个程序,假设你的文件分为 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自己会把所有文件内容都读进来处理的

perl如何遍历指定文件夹下的指定扩展名文件并读取内容

不知道你这里读取具体指什么,我就把文件名打印出来,把文件内容打印出来吧。(程序指定两个参数,第一个参数是指定的文件夹名,每二个参数是指定的扩展名。)

#!/usr/bin/perl

use strict;

use warnings;

die "Usage: $0 dir extion\n" unless @ARGV == 2;

my $Dir = $ARGV[0] ;

my $Ext = $ARGV[1] ;

opendir(DH, "$Dir") or die "Can't open: $!\n" ;

#读取指定文件夹下面的指定扩展名的文件名,保存到数组里。

my @list = grep {/$Ext$/ -f "$Dir/$_" } readdir(DH) ;

closedir(DH) ;

chdir($Dir) or die "Can't cd dir: $!\n" ;

foreach my $file (@list){

open(FH, "$file") or die "Can't open: $!\n" ;

print "$file:\n" ;

while(FH){

print ;

}

print "\n";

close(FH) ;

}

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

有两种方法如果递归的找子目录可以用下面的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);

}

}

}

如何使用perl遍历一个目录下的所有文件

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