Perl 通过XML读取路径信息 疑惑

jake20032004 2009-09-27 10:26:42
我希望通过一个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>
...全文
64 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
jake20032004 2009-09-28
  • 打赏
  • 举报
回复
搞什么不满意结贴,无聊
jake20032004 2009-09-28
  • 打赏
  • 举报
回复
use Encode;
$v12 = encode("gb2312",decode("gb2312",$v1));
jake20032004 2009-09-27
  • 打赏
  • 举报
回复
定位:是由于涉及到一些目录是中文字符,所以才报错.
可能原因:
(1)XML:
<?xml version="1.0" encoding="UTF-8"?>
(2)pl中:
未指定编码格式

但是再深一点就搞不定了. 哪个大侠对处理中文比较熟悉的,请发表下意见,Thanks!
claro 2009-09-27
  • 打赏
  • 举报
回复
perl不了解
正在尝试用Python提取XML。

37,720

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧