my $printer = new Printer('linux' => 'lp', 'MSWin32' => 'LPT1'); $printer->print_command('linux' => {'type' => 'pipe', 'command' => 'lpr -P lp'}, 'MSWin32' => {'type' => 'command', 'command' => 'gswin32c -sDEVICE=mswinpr2 -dNOPAUSE -dBATCH $spoolfile'} ); sub print { my $pw = MainWindow->new(-title=>"Printer Options"); my $frame = $pw->Frame->pack(-side => 'top', -fill => 'x'); $frame->Button(-text => "Show Printers", -background => 'navy blue', -foreground => 'white', -command => \&show_printers)-> pack(-side => 'right'); $frame->Button(-text => "Print File", -background => 'navy blue', -foreground => 'white', -command => \&print_file)-> pack(-side => 'left'); sub print_file { $status->delete("1.0", "end"); $status->insert("end", "Printing Document...."); my $target = $t->get("1.0", "end"); $printer->use_default; $printer->print($target); $status->insert("end", "done\n"); } sub show_printers { my %available_printers = $printer->list_printers(); foreach my $key (%available_printers) { foreach my $field (qw/name port/) { print $field, "=", $$key{$field}, " "; } } } sub list_jobs { my @queue = list_jobs(); foreach my $ref (@queue) { foreach my $field (qw/Rank Owner Job Files Size/) { print $field, " = ", $$ref{$field}, " "; } print "\n"; } } }