在perl中工作我设法编写了一个从文件用户名中读取的程序。每个用户名都已登录和注销,并且已记录这些日志。例如:
maclawty796 pts/1 ip-64-134-238-2. Fri Oct 21 14:23 - 14:25
maclawty796 pts/2 10.1.28.122 Fri Oct 21 09:42 - 09:55
ehowe pts/3 10.1.28.204 Fri Oct 21 09:28 - 09:29
如您所见,用户可能会被记录两次。我试图不通过用户名和月份统一所有这些帐户的信息。例如:
maclawty796 Oct xxx minutes
maclawty796 Sep xxx minutes
我已经设法获得单独的时间和日志,请参阅下面的代码,现在我假设统一时间和日期,我必须使用散列或散列哈希。我有一种感觉,我的哈希必须是用户名,然后是用户名处于活动状态的两个月的哈希值,并且在该哈希值内另一个哈希值,用于添加用户在该月登录的所有时间。然后我必须输出它。问题是,我不知道从哪里开始哈希。在代码中,您可以看到我徒劳地尝试制作基本哈希。
#!/usr/bin/perl
use strict;
my($name, $month, $time1, $time2, $time3, $time4, $totstime, $totstime2, $totaltime);
my %gash = (
username => $name,
);
open (MYFILE, 'Textlog.txt');
while (<MYFILE>){
if(($name, $month, $time1, $time2, $time3, $time4) = /(\w+\d*?).*(Oct|Sep).*(\d\d).*(\d\d).*(\d\d).*(\d\d)/){
chomp;
$totstime = ($time3 - $time1)*60;
$totstime2 = $time4 - $time2;
$totaltime = $totstime + $totstime2;
print "name $name month $month $totaltime\n";
}
}
close(MYFILE);