加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

perl读写文件

发布时间:2020-12-16 00:11:19 所属栏目:大数据 来源:网络整理
导读:1,从命令行读取文件或者文件夹 2,支持无限多个文件或者文件夹参数,不分顺序 3,可以识别非法文件和文件夹,退出并提示 组合一: FileDirHelper.pm #!/usr/local/bin/perl#Ljlpackage FileDirHelper;my ($size,$dircnt,$filecnt) = (0,0);my @files;my @Al

1,从命令行读取文件或者文件夹
2,支持无限多个文件或者文件夹参数,不分顺序
3,可以识别非法文件和文件夹,退出并提示

组合一:

FileDirHelper.pm


#!/usr/local/bin/perl
#Ljl
package FileDirHelper;

my ($size,$dircnt,$filecnt) = (0,0);
my @files;
my @AllDirs;

sub getAllFiles{
	my $dir=shift;
	lsr_s($dir);
	print "Load $filecnt files,$dircnt directory. $size bytes.n";
	return @files;
}

sub getAllDirs{
	my $dir=shift;
	lsr_s($dir);
	return @AllDirs;
}

sub getDirDetail{
	my $dir=shift;
	lsr_s($dir);
	return ($size,$filecnt);
}

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)) {
            if ($_ eq '.' || $_ eq '..') {
                next;
            }
            $file = $dir.$_;         
            if (!-l $file && -d _) {
                $file .= '/';
                push(@dirs,$file);
            }
            process($file,$dir);
        }
        closedir(DH);
    }
}



sub process($$) {
    my $file = shift;    
    if(-f $file){
    	#print $file,"n";
    	push @files,$file;
    }else{
      push @AllDirs,$file;
    }
    if (substr($file,length($file)-1,1) eq '/') {
        $dircnt++;
    }
    else {
        $filecnt++;
        $size += -s $file;
    }
}

1;


AllFilesChecker.pl

#!/usr/local/bin/perl
#ljl
use Cwd;
use File::Basename;
use FileDirHelper;

if(scalar(@ARGV)<1){
	print "Usage: Please input the RD path/filen";
	exit;
}

my @file;

for my $arg(@ARGV){
	if(not -e "$arg"){
		print "ERROR: ".$arg."  is not right path or file!n";
		exit;
	}
	if(-f "$arg"){
	  push @file,$arg;	
	}else{
		my @fileTemp = FileDirHelper::getAllFiles($arg);
	  push @file,@fileTemp;	
	}
}

if(!-d "result"){
	mkdir "result";
}

my $currPath = cwd();
my $outFile = $currPath.'/result/';

for my $file(@file){
 my $fileCount=0;
 my $filename=basename($file);
 #my $baseName=substr($filename,index($filename,'.'.'txd')); 
 #open OUT,">".$outFile.$baseName.'.txt';
 print "[Read the file]: ".$filename."n";
 open FILE,$file or die "can not open the file ".$filename."n";
 while(<FILE>){
 	chomp;
 	print "rtProcess:".($fileCount++);
 	
 }	
 print "n";
 close FILE;
}

#open OUT,">".$outFile."result.txt";




print "Finish! You can check the result files in :".$outFile."n";



组合二:

FindAllFiles.pm

package FindAllFiles;
sub getfile{
	my ($path,$expandName) = @_;
	undef @allFiles;
	my @allFiles=getFilesFromDir($path,$expandName);
	return @allFiles;
}
sub getFilesFromDir{
	my ($path,$expandName) = @_;
	@allFiles;
	opendir (PATH,"$path") or die "serious dainbramage:$!n";
	my @subAll = grep !/^..?$/,readdir PATH;
	closedir PATH;
	foreach my $file(@subAll){	
		my $subPath = "$path$file";
		if(-d "$subPath"){
			&getFilesFromDir($subPath,$expandName);
		} else {
			if(-e "$subPath" and $subPath =~ /$expandName$/){
				if($subPath=~/^(\.*)(\)(.*)$/){
					$subPath = $1."".$3;
				}
				push @allFiles,"$subPath";
			}
		}
	}
	return @allFiles;
}
1;

AllFilesChecker.pl

use Cwd;
use File::Basename;
use FindAllFiles;

if(scalar(@ARGV)<1){
	print "Usage: Please input the RD path/filen";
	exit;
}
my $fileType='txd';#注意文件类型
my @file;

for my $arg(@ARGV){
	if(not -e "$arg"){
		print "ERROR: ".$arg."  is not right path or file!n";
		exit;
	}
	if(-f "$arg"){
	  push @file,$arg;	
	}else{
		my @fileTemp = FindAllFiles::getfile($arg,$fileType);
	  push @file,@fileTemp;	
	}
}

if(!-d "result"){
	mkdir "result";
}

my $currPath = cwd();
my $outFile = $currPath.'/result/';

for my $file(@file){
 my $fileCount=0;
 my $filename=basename($file);
 my $baseName=substr($filename,'.'.$fileType));
 
 print "[Read the file]: ".$filename."n";
 open FILE,$file or die "can not open the file ".$filename."n";
 while(<FILE>){
 	chomp;
 	print "rtProcess:".($fileCount++);
 	
 }	
 print "n";
 close FILE;
}

open OUT,">".$outFile."result.txt";




print "Finish! You can check the result files in :".$outFile."n";
print "*****************[Map Data]: The best group in the world! *******************n";

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读