in reply to Reading streams, perl variables when script is running
G'day xtpu,
Welcome to the monastery.
There are a number of FAQs (in perlfaq8 and perlfaq9) with information about passwords. The most relevant to your question would be "How do I ask the user for a password?"; although, the others may be of interest.
You can put lexical variables in an anonymous scope to make them private. In the following demo script, only the subroutines initialise_password() and retrieve_password() have access to the $password variable: even if you accidentally used $password somewhere else in your code, it would be a completely different variable.
The following code shows the techniques you might use to read the password once at startup, store it in a private variable and retrieve it as many times as you want.
#!/usr/bin/env perl use strict; use warnings; { my $password; sub retrieve_password { return $password if defined $password; die 'Password not defined'; } sub initialise_password { return if defined $password; use Term::ReadKey; print 'Enter password: '; ReadMode('noecho'); $password = ReadLine(0); print "\n"; ReadMode('restore'); return; } } start(); test(); sub start { initialise_password(); } sub test { print 'Testing: ', retrieve_password(), "\n"; }
Sample run:
Enter password: Testing: some_password
-- Ken
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Reading streams, perl variables when script is running
by xtpu (Novice) on Jan 05, 2014 at 03:02 UTC | |
by kcott (Archbishop) on Jan 05, 2014 at 06:03 UTC | |
by xtpu (Novice) on Jan 05, 2014 at 07:47 UTC |