If you want to know the values of your hash, here's a little trick:
use Data::Dumper; my %passwords; # please don't name your data structure # %new_hash. That's not a telling name at # all while(1) { print "Please enter your first name\n"; chomp ($fname =<STDIN>); { last; } print "Please enter your last name\n"; chomp ($lname =<STDIN>); { last; } print "Please enter a password\n"; chomp ($password =<STDIN>); { last; } print "Please enter 'done' or hit your return key\n"; chomp ($ending =<STDIN>); if ($ending eq '\n' or 'done') { last; } } my $username = "$lname, $fname"; # here comes the magic: print Dumper \%passwords; # you'll see that the hash # is empty. # rest of the script goes here
You have to actually store the passwords:
while(1) { print "Please enter your first name\n"; chomp ($fname =<STDIN>); { last; } print "Please enter your last name\n"; chomp ($lname =<STDIN>); { last; } print "Please enter a password\n"; chomp ($password =<STDIN>); { last; } # important: store the passwords in %passwords $passwords{$fname} = $password; print "Please enter 'done' or hit your return key\n"; chomp ($ending =<STDIN>); if ($ending eq '\n' or 'done') { last; } }
Additionally the usual tips apply: always use strict; use warnings and declare your variables.
To answer your original question: to achieve case insensitivity, use lc or uc to convert the strings (for example first name) to all lower or all upper case, and only then store them.
In reply to Re^3: Search a hash for STDIN and report findings
by moritz
in thread Search a hash for STDIN and report findings
by trenchwar
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |