#!c:\perl\bin\perl.exe -w # use strict; use Win32::Console; use Time::Local; my $CONSOLE = new Win32::Console(STD_INPUT_HANDLE); my %vals = ('cuname'=>'','defolder'=>'','cutoffdt'=>''); my %labs = ('cuname'=>'Customer Import Folder','defolder'=>'DE SubFolder','cutoffdt'=>'Cutoff Date ddmmyy'); system "cls"; my $console_mode = $CONSOLE->Mode(); my $echo_on = (ENABLE_PROCESSED_INPUT) | (ENABLE_ECHO_INPUT); my $echo_off = (ENABLE_PROCESSED_INPUT); $CONSOLE->Mode($echo_on); $CONSOLE->Title("Change Backdated DE files"); my $promptstr = " "; my $seq = 0; foreach my $val ('cuname','defolder','cutoffdt') { $promptstr = sprintf('Enter %-25.25s = ',"\u$labs{$val}"); $CONSOLE->Mode($echo_off); print "$promptstr"; $_=''; my $chr = ''; READLINE: for(;;) { $chr = $CONSOLE->InputChar(1); last READLINE if ($chr eq "\r"); next READLINE if ($chr eq "\n"); if ($chr lt ' ') { $seq = ord($chr); # # allow backspace to edit # if ($seq == 8 && $_ ne '') { chop; # trim the last char print "$chr $chr"; # and overprint with a space on screen } next READLINE; } $_ .= $chr; if ($labs{$val} =~ /password/i) { print '*' ; } else { print "$chr" ; } } &err_exit(0) unless($_ && $_ !~ /^exit$/i); $vals{$val} = $_; print "\n"; } $CONSOLE->Mode($console_mode); # restore default mode