#!/usr/perl/bin use strict; my %printer_hash; my $current_printer; while() { if (/^printer/) { my ($idle, $enabled); ($current_printer,$idle,$enabled) = (split)[1,3,4]; $printer_hash{$current_printer}{IDLE_STATUS} = $idle eq "idle"?0:1; $printer_hash{$current_printer}{ENABLED} = $enabled eq "enabled"?"UP":"DOWN"; } elsif ( /Interface:(.+)/i ) { chomp; $printer_hash{$current_printer}{INTERFACE} = (split /\//, $_)[-1]; } elsif ( /Description: (.+)/i) { $printer_hash{$current_printer}{INTERFACE} = $1; } elsif ( /Connection: (.+)/i) { $printer_hash{$current_printer}{CONNECTION} = $1 eq "direct"?"local":"remote"; } elsif (/Banner not required/) { $printer_hash{$current_printer}{BANNER} = "NO"; } } foreach my $printer ( keys %printer_hash ){ foreach my $item ( keys %{$printer_hash{$printer}} ) { print "$printer => $item: $printer_hash{$printer}{$item}\n"; } } __DATA__ printer llp is idle. disnabled since Wed Oct 23 15:54:08 GMT 2002. available. Form mounted: Content types: any Printer types: unknown Description: OPENprint printer llp Connection: direct Interface: /usr/lib/lp/model/standard On fault: write to root once After fault: continue Users allowed: (all) Forms allowed: (none) Banner not required Character sets: (none) Default pitch: Default page size: Default port settings: -opost printer ps is idle. enabled since Wed Oct 23 15:54:17 GMT 2002. available. Form mounted: Content types: postscript, simple Printer types: unknown Description: local printer Connection: direct Interface: /usr/lib/lp/model/net_lj4x On fault: write to root once After fault: continue Users allowed: (all) Forms allowed: (none) Banner not required Character sets: (none) Default pitch: Default page size: Default port settings: