Вот простенький пример получения списка установленных принтеров в системе:
use Net::CUPS;
use Net::CUPS::Destination;
my $cups = Net::CUPS->new();
my @printers = $cups->getDestinations() or die "No printers";
foreach my $printer (@printers){
print 'Printer:',$printer->getName(),"\n";
}
Результат запуска на машине с двумя установленными принтерами:
Printer:SMB_HP1
Printer:SMB_HP2