要求实现功能:
1.调用脚本parasedate.sh 对如文件进行解析,文件格式如:“PM_200901091100-200901091200.10.xml”
“PM_200901091100-200901091200.86.xml”
2.只对后缀名为“.10.xml”的文件进行解析
写了程序如下:
#!/usr/local/bin/perl
use Time::ParseDate;
use File:Dumper;
local ($path,$file,$timestamp);
local (@file,$starttime,$reportnum);
$path = "/home3/pmlog";
$timestamp = "time2str("%Y-%m-%d %H:00:00",parsedate("today") - 3600)";
opendir(DIR, $path) || die "can't opendir $some_dir: $!";
@files = readdir(DIR);
#print Dumper(@files); //OK,能成功打开文件夹读取文件
closedir DIR;
#调用分析程序 /匹配PM_200901161600-200901161700_10.xml/
for (my $i=0;$i<@file;$i++){
if ($file[$i]=~/.\_([A-Za-z0-9]+)-[A-Za-z0-9]+_(\d+).\w+$/)
//匹配文件夹下符合文件格式的所有文件
{
#print "$file[$i]\n" ; //不能成功匹配??
$starttime=$1;
$reportnum=$2;
if($startime=$timestamp){
//判断开始时间是否所取的时间值(当前时间往前一小时取整)
while ($reportnum=10){
//当报告号为10时,进行系统调用
#print "$file[$i];\n"
system (cd $path);
system (pmfileparser $file[$i]);
}
}
}
}
请高手来帮看看程序:
1.循环结构有没有问题??
2.正则匹配是否正确???