#!/usr/bin/perl use strict; my %ProcessCount = (); my %ProcessAuth = (); open(FLH, "tm1smsg.log") or open(FLH, "tm1server.log"); #die "Cannot open tm1smsg.log"; while () { my $datetime = ""; my $process = ""; my $user = ""; if ( (/^(.* \d\d:\d\d:\d\d):Process (.*) executed by (.*)/) ||(/^.*INFO (.* \d\d:\d\d:\d\d).*TM1\.[^ ]* Process (.*) executed by (.*)/) ) { $datetime = $1; $process = $2; if ($process =~ /^"(.*)"$/) { #TM1 8 log format adds quotes around process name $process = $1; } $user = $3; #print "$1 $2 $3\n"; $ProcessCount{$2}++; $ProcessAuth{$2} = "$datetime $user"; } } close FLH; open(FLW, "> processes.txt") or die "Cannot open processes.txt!"; print FLW "processes by name: \n"; for my $process (sort keys %ProcessAuth) { print FLW "$process run $ProcessAuth{$process} [x$ProcessCount{$process}]\n"; } print FLW "\nprocesses by last run: \n"; my @sorted = sort { $ProcessAuth{$a} cmp $ProcessAuth{$b} } keys %ProcessAuth; for my $process (@sorted) { print FLW "$ProcessAuth{$process} ran $process [x$ProcessCount{$process}]\n"; } system("notepad processes.txt");