perl判断文件是否存在

perl判断文件是否存在,第1张

print -e 'C:\windows\readme.txt'

如果存在文件,就会输出1,否则没有输出。

-e表示文件存在,判断是否存在目录要用 -d。

给加分不?

#compare folders

use strict

sub get

sub FolderCompare

#输入的格式为:"perl foldercompare.pl <ul1 name><ul2 name>\n"

if ( @ARGV <2 )

{

die

}

system"svn export @ARGV[0] A"

system"svn export @ARGV[1] B"

my $dirA = "A"

my $dirB = "B"

FolderCompare($dirA, $dirB, "0") #第一次正向比较

FolderCompare($dirB, $dirA, "1") #第二次反向比较,主要是查出B中有而A中没有的

#其中第三个参数是为了清除第一次已经输出的不一样的文本

system"rm A -rf"

system"rm B -rf"

print "Finished!"

sub get

{

my $dir = $_[0]

my %array

opendir(DIR, $dir)

while (my $file = readdir(DIR))

{

my @array_tmp = stat("$dir/$file")

if($file =~ m/^[^.]/)

{

if(-d "$dir\\$file") #判断是否为目录,并标记

{

$array{$file} = [$array_tmp[7], "1"]

}

if(-f "$dir\\$file") #判断是否为文件,并标记

{

$array{$file} = [$array_tmp[7], "0"]

#print "$file\t$array{$file}[1]\n"

}

}

}

return %array

}

sub FolderCompare

{

my $FolderA = $_[0]

my $FolderB = $_[1]

my $temp = $_[2]

my %arrayA = get($FolderA)

my %arrayB = get($FolderB)

foreach my $FileNameA (keys(%arrayA))

{

if(exists($arrayB{$FileNameA}))

{

if($arrayA{$FileNameA}[1] eq "1")

{

if($arrayB{$FileNameA}[1] eq "1")

{

FolderCompare("$FolderA\\$FileNameA", "$FolderB\\$FileNameA", "$temp") #都为目录,进行递归

}

}

if($arrayA{$FileNameA}[1] eq "0") #都为文件,进行比较

{

if($arrayB{$FileNameA}[1] eq "0")

{

if($arrayA{$FileNameA}[0] != $arrayB{$FileNameA}[0])

{

if($temp == 0)

{

print "$FolderA\\$FileNameA is different from $FolderB\\$FileNameA\n"

}

}

}

}

}

else

{

print "$FolderA\\$FileNameA is not exitst in $FolderB\n"

}

}

}


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存