#!/usr/bin/perl use warnings; use strict; use IPC::Open3; use Tk; my $mw=tkinit; my $start_but = $mw->Button(-text => 'Start Scan', -command => \&start_scan)->pack(); my $cancel_but = $mw->Button(-text => 'Cancel Scan', -command => \&stop_scan)->pack(); MainLoop; ################################### sub start_scan{ # do a 'scanimage -L ' for your list my @options = ( '-d umax:/dev/scanner', '-b', '--format=tiff', '--batch-count=3', '--batch-prompt', ); #interface to scanimage my $pid = open3(\*WRITE, 0 ,\*ERROR, "scanimage @options" ); $mw->fileevent('ERROR', 'readable' => \&collect_stderr); } ############################################################### sub collect_stderr { my $err = ; print $err; } ############################################################### sub stop_scan{ # print WRITE chr(4),"\n"; # print WRITE "\x04\n"; print WRITE "\cd"; # print WRITE "\004\n"; }