- 论坛徽章:
- 0
|
我现在程序改成了
#!/usr/bin/env/perl
use strict;
use Cwd;
use File::Find;
use FileHandle;
use DBI;
my $logfile;
my $index = 0;
sub search_Filename {
if(-f $_ and $_ =~/\d{1,}_\d{1,}\.\d{1,}\.\d{1,}\.\d{1,}_\d{1,}_\d{1,}_D\.LOG/)
{
$logfile->{$index++}=$File::Find::name;
}
}
sub get_file_data()
{
my $my_file = shift;
my $logHash = shift;
# my $vnName;
my $file_handle = new FileHandle("<".$my_file) || die "can not open $my_file\n";
my $line = <$file_handle>;
# $line = <$file_handle>;
while( $line = <$file_handle> )
{
if($line=~/B\:\s*=\s*(\S+)/)
{
$logHash->{"B"}=$1;
}
elsif($line=~/C\:\s*=\s*(\S+)/)
{
$logHash->{"C"}=$1;
}
elsif($line=~/D\:\s*=\s*(\S+)/)
{
$logHash->{"D"}=$1;
}
elsif($line=~/E\:\s*=\s*(\S+)/)
{
$logHash->{"E"}=$1;
}
elsif($line=~/F:\s*=\s*(\S+)/)
{
$logHash->{"F"}=$1;
}
elsif($line=~/G\:\s*=\s*(\S+)/)
{
$logHash->{"G"}=$1;
}
}
close($file_handle);
}
sub main()
{
my $logHash;
my ($B,$C,$D,$E,$F,$G);
find(\&search_Filename, getcwd);
# print "$file\n";
print "===========================================================\n";
print "connecting database...\n";
my ($data_source,$uid,$pwd); #database
my $data_source="";
my $uid="";
my $pwd="";
my $orig_dbh = DBI->connect($data_source,$uid,$pwd,{RaiseError => 0,ChopBlanks => 1,PrintError => 0, AutoCommit => 1})||die "
Connect database err:".$DBI::errstr;
print "connecting database successful\n";
foreach my $key (keys %$logfile)
{
my $file =$logfile->{$key};
# print "$file\n";
&get_file_data($file,\&logHash);
foreach my $key1 (keys %$logHash)
{
$B = $logHash->{"B"};
print "$B\n";
}
}
}
main();
但是为什么没打印出CLIENT_IP来呢?
是没匹配上吗?
日志文件是这样的
# A:2010-01-12 11:26:28
# B:IP地址
# C:名称
# D:aa
# E:1
# F:10571
# G:
# H:1
# I:23
2010-01-12 11:26:36 pwd
2010-01-12 11:26:37 ls -lrt
2010-01-12 11:26:40 cd log |
|