How can I enter a password using Perl and replace the characters with '*'?

后端 未结 7 993
长发绾君心
长发绾君心 2020-12-03 03:54

I have a Perl script that requires the user to enter a password. How can I echo only \'*\' in place of the character that the user types, as they type it?

I\'m using

相关标签:
7条回答
  • 2020-12-03 04:21

    using Pierr-Luc's program

    # Start reading the keys                                                                                                                                                                                       
    ReadMode(4); #Disable the control keys                                                                                                                                                                         
    while(ord($key = ReadKey(0)) != '13' )                                                                                                                                                                            
    # This will continue until the Enter key is pressed (decimal value of 10)                                                                                                                                      
    {                                                                                                                                                                                                              
        # For all value of ord($key) see http://www.asciitable.com/                                                                                                                                                
        if(ord($key) == 127 || ord($key) == 8 && (length($password) > 0)) {                                                                                                                                                                   
            # DEL/Backspace was pressed                                                                                                                                                                            
            #1. Remove the last char from the password                                                                                                                                                             
            chop($password);                                                                                                                                                                                       
            #2 move the cursor back by one, print a blank character, move the cursor back by one                                                                                                                   
            print "\b \b";                                                                                                                                                                                         
        } elsif(ord($key) > 32) {                                                                                                                                                                                  
            $password = $password.$key;                                                                                                                                                                            
            print "*";                                                                                                                                                                              
        }                                                                                                                                                                                                         
    }                                                                                                                                                                                                              
    ReadMode(0); #Reset the terminal once we are done
    
    0 讨论(0)
提交回复
热议问题