本文目录一览:
- 1、perl如何批量提取所有文件固定位置内容到另一个文件
- 2、perl 读取文件夹下所有txt,并处理数据
- 3、perl如何遍历指定文件夹下的指定扩展名文件并读取内容
- 4、怎么样在Perl中取得指定目录下的所有文件
- 5、如何使用perl遍历一个目录下的所有文件
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读取文件夹下所有文件