use strict; use warnings; use diagnostics; use Data::Dumper; open PAGELOG, "page_log" or die "unable to open pagelog: $!\n"; my %unique=(); my (@array, @queues); my @LOGLINES=map { split /^(.*)$/, $_ } ; # Get all unique queue names for (@LOGLINES) { next unless /^\w+.*/; my $queue=$1 if /^(\w+)\s.*/; push (@queues, $queue) unless $unique{$queue}++; } for my $line(@LOGLINES) { chomp ($line); next unless ( $line =~ m/^\w+.*/ ); for my $queue (@queues) { chomp ($queue); next unless ($queue =~ m/\w+/); if (grep $queue, $line) { s/$1//g if ($line =~ m/.*(\[.*\])\s.*/); s/$1/ /g if ($line =~ m/^\w.*(\s\s).*/); my ($printer, $user, $jid, $page, $copies, $billing, $host) = split(/ /, $line); push ( @array,[$queue, $user, $jid]) unless $unique{$jid}++; } } } print Dumper @array;