#!/usr/bin/perl -w # # parselog.pl - Script to split log files by customer # use warnings; my $logfile; # input log file my $media; # media type my %cust; # hash of all customers found in $logfile my $thiscust; # customer derived from current input line my @fields; # input logfile fields my $thiscustlog; # file handle to current customer's logfile my $prefix; # cust logfile prefix my $suffix; # cust logfile suffix $logfile = $ARGV[0]; if ( $logfile =~ /WMS/ ) { $media = "wms"; $prefix = "/usr/home/script/${media}_cust/"; $suffix = ".$media.log"; } else { die "Unknown file format"; } open (LOGFILE, "< $logfile") or die ("Could not open $logfile."); while () { if ( /^[0-9]/ ) { @fields = split; $thiscust = (split /\//, $fields[4])[1]; if ( ! exists ($cust{$thiscust}) ) { print "customer $thiscust\n"; $cust{$thiscust} = $thiscust; open ($thiscust, ">> ${prefix}${thiscust}${suffix}") or die ("Cannot open ${prefix}${thiscust}${suffix}"); } print $thiscust $_; } } foreach $thiscust (%cust) { close $thiscust; } exit 0;