in reply to How can I use all special characters in perl
Your regex checks that the password has at least one word character somewhere, followed by at least one digit, followed by an at-sign, or it contains an octothorpe, or it contains a dollar sign, or a percent sign, or a backslash, or a forward slash.
Use a character class intead. You need to escape ], $, \, and - in it, nothing else. You need to escape a slash, too, because it's the delimiter of the whole regex.
You can use a regex match to check both the valid characters and the length of the password:
#!/usr/bin/perl use warnings; use strict; use feature qw{ say }; print 'Enter the password: '; chomp( my $password = <> ); if ($password =~ /^[\w\d@#\$%`~!^&*()_\-+={}[\]|\\'";:\/?.><,]{8}$/) { say "You're now authenticated."; } else{ say 'Please enter the correct password'; }
|
|---|