首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > perl python >

下面这段pl文件是用来解析二进制.dat文本文件的,哪位高手帮小弟我把这段pl文件,改写成java文件,用来解析同一个.dat文件,达到与pl文件解析同样的效果

2013-06-25 
下面这段pl文件是用来解析二进制.dat文本文件的,谁帮我把这段pl文件,改写成java文件,用来解析同一个.dat文

下面这段pl文件是用来解析二进制.dat文本文件的,谁帮我把这段pl文件,改写成java文件,用来解析同一个.dat文件,达到与pl文件解析同样的效果?
我想转成java文件,主要有的地方还是看不太懂。
请perl脚本语言高手帮个忙吧~


#!/usr/bin/perl -w
############################## check_log.pl ##############
# Version : 0.1
#通过检查dat文件查看在线行情
#created by ztt 0422
#日志文件.dat 2分钟记录一次
#使用范例
# ./check_log.pl 2000 1
#在线人数正常,时间:Fri May 31 14:22:17 2013 流量:3.323791 ,在线人数:1480
###########################################################
 
use strict;
 
my %ERRORS=('OK'=>0,'WARNING'=>1,'CRITICAL'=>2,'UNKNOWN'=>3,'DEPENDENT'=>4);
my ($year,$mon,$day)=(localtime)[5,4,3];
$year+=1900;
$mon+=1;
my $daystring=sprintf("%04u-%02u-%02u",$year,$mon,$day);
#文件格式yyyy-mm-dd.dat
my $filename="/home/monitor/data/".$daystring.".dat";
#print($dayn);

if(! $ ARGV [ 0 ]||!$ ARGV[1] )
  {print_usage();
  exit(1);
  }
my $max= $ ARGV [ 0 ];
my $min= $ ARGV [ 1 ];
if($min > $max)
{
  printf "参数错误,最小值大于最大值";
  exit $ERRORS{"UNKNOWN"};
 }
# 开始读取文件
open (INFILE,"<$filename" ) or  die "Unable to open file\n";
#open (INFILE,"c:/default.dat" ) or  die "Unable to open file\n";
binmode (INFILE);
my $buffer;
my $time=0;
my $cpu=0;my $net=0;my $usernum=0;
my $num=0;
while(read(INFILE,$buffer,28))
{
    ($time,$cpu,$net,$usernum) = unpack("L s f i",$buffer);

    $num+=1;
   #  printf "Time is %d,net is %f Number of User = %d\n", $time,$net,$usernum;
}
$time=localtime($time);
close(INFILE);
if($usernum<$min)
{
printf "在线人数异常,时间:%s 流量:%f ,在线人数:%d", $time,$net,$usernum;
exit $ERRORS{"CRITICAL"};
}
elsif($usernum>$max)
{
printf "在线人数异常高,时间:%s  流量:%f ,在线人数:%d" ,$time,$net,$usernum;
exit $ERRORS{"WARNING"};
}
else
{
printf "在线人数正常,时间:%s 流量:%f ,在线人数:%d"  ,$time,$net,$usernum;
exit $ERRORS{"OK"};
}

sub print_usage {
  print <<EOTXT;
Usage: check_log [-max maxnum] [-min minnum]
EOTXT
}

[解决办法]
或许你可以把一个大问题分解成许多的小问题.你能自己写多少呢?你百度之后不能解决再问或许会更好。

热点排行