Perl 通过XML读取路径信息 疑惑
我希望通过一个XML文件读取一个路径信息,然后遍历出该路径下的文件.
通过读取XML文件得到的路径信息:在unless (-f $one_file)时候会发现非文件信息:
[181] -> [E:/Upgrande_B92~B92SPC002/OldVerSrc/CSF/Resource/界面字段/syspmaintbl.upt,但是该文件确实存在
但是:拼接出来的路径信息,在unless (-f $one_file)无信息输出.
(XML中\\和/ 试过,结果一样)
请众高手指点下,谢谢!
Code:
#!/usr/bin/perl -w
use Cwd;
use File::Find;
use File::Spec;
use File::Basename;
use XML::Simple;
my @leach_key_filename = qw/errorinfo keep _err .bak/;
my $newsrc_dir = "";
my @files_list = ();
sub read_cfg
{
our $work_dir = cwd;
my $cfg_file = "$work_dir/csf.xml";
my $rcfg = eval{ XMLin($cfg_file)}||die "Error:failed to open XML file: $!";
$oldsrc_dir = $rcfg->{OldSrcDIR};
print "1oldsrc_dir -> $oldsrc_dir \n";
# $oldsrc_dir = File::Spec->catfile(cwd, "OldVerSrc", "CSF");
print "2oldsrc_dir -> $oldsrc_dir \n";
}
sub FindFile
{
if (-f $_)
{
my $res_file = $File::Find::name;
foreach my $leach_key (@leach_key_filename)
{
if($res_file =~ /$leach_key/)
{
return;
}
}
push @files_list, $res_file;
}
}
sub pro_run
{
read_cfg();
# @files_list = ();
print "1 -> [$oldsrc_dir]\n";
find(\&FindFile, $oldsrc_dir);
my $tt=0;
foreach my $one_file (@files_list)
{
$tt++;
unless (-f $one_file)
{
print "[$tt] -> [$one_file]\n";
exit(1);
}
}
}
pro_run();
XML:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<OldSrcDIR>E:/Upgrande_B92~B92SPC002/OldVerSrc/CSF</OldSrcDIR>
</root>