I am developing an automation script in perl in which for authentication I have written a subroutine which takes password input by user and return it to the main perl program which in turn passes the password to the tool that I need to automate.
This script goes fine with every case unless the character # is part of the password. Then it is not able to automate the tool and fails for authentication.
Below is the subroutine which I used for taking password input.
use Win32::Console;
sub password() {
    $StdIn = new Win32::Console(STD_INPUT_HANDLE);
    my $Password = "";
    $StdIn->Mode(ENABLE_PROCESSED_INPUT);
    print "Enter Password: ";
    while (ord(my $Data = $StdIn->InputChar(1)) != 10) { 
        if("\r" eq $Data ) {
            last;
        }
        elsif ("\ch" eq $Data) {
            if( "" ne chop( $Password )) {
                print "\ch \ch";
            }
            next;
        }
        $Password .=$Data;
        print "*";
    }
    return $Password;
}
i am calling the above subroutine as
$passwd = &password();
And then passing the  $passwd to the tool that I need to automate as below,
This is the line in which I pass the password to tool,
cc -c URL OF THE TOOL:$server -d $domain -t $appl -u $userid -p $passwd; \n"; 
Can anyone please cross check the code for calling the password() sub routine, returning $password and passing $passwd to the tool. I think error may be at one of the three places.Someone please help and if possible provide the code too.
 
     
     
    