sub WMSCANNERDATA { print "Scanner Has data waiting\n"; my ($object, $wParam, $lParam, $type, $msgcode) = @_; return unless $type == 0; return unless $msgcode == WM_SCANNERDATA; print "Data size: $wParam\n"; my $buffer= 0 x $wParam; # added this line to make function call work my $buffersize= \$wParam; my $ret=$ScanGetData->Call($ScannerHandle, $buffer, $buffersize); # Inform scanApi.dll this application does nor handle call backs print "Return code: $ret"; if ($ret != SR_SUCCESS) { &DisplayScanError($ret); exit; } print $buffer."\n\n"; return 1; }