A. Simple
1. Write a Perl script to find and print the longest word in a text file.
2. Implement proactive password checker, means allow a person to enter his password, check for following conditions
- Password should be at least 8 characters in length
- It should contain alphanumeric, upper & lowercase letters
- It should contain any of these special characters @, $ and #.
Solutions
-
#!/usr/bin/perl -w
#Write a Perl script to find and print the longest word in a text file.
#Importing packages
use strict;
use Getopt::Long;
#Global variables
my ($help, $file);
#Processing command line arguments
GetOptions("h"=>\$help,
"f=s"=>\$file,
);
if($help) {
usage();
}
#Check for -f option
if(!defined($file)){
print "ERROR: -f option is compulsory\n";
usage();
}
open(FH, "$file") || die "Error: Can't open $file: $!";
my ($len,$word,@line,$element);
my $largest=0;
foreach()
{
@line=split(/\s+/,$_);
foreach $element (@line)
{
$len=length($element);
if($len > $largest) {
$largest=$len;
$word=$element;
}
}
}
print "Largest word length is: $largest and the word is $word\n";
sub usage
{
print "USAGE: $0 -f \n";
exit(1);
}
2.
#!/usr/bin/perl -w
## Proactive password checker ##########
use strict;
use Term::ReadKey;
my $user=`whoami`; chomp($user);
print "Hello $user ..\n";
my $try=0;
my $passwd;
accept_password();
sub accept_password
{
$try++;
if($try <= 3)
{
print "Enter your password\n";
ReadMode 'noecho';
$passwd=ReadLine 0;chomp($passwd);
ReadMode 'normal';
check_passwd();
}else
{
print "You exceeded maximum attempts\n";
exit(1);
}
}
sub check_passwd
{
#Check if password length is atleast 8
if(length($passwd) <>
{
print "ERROR: Your password length is less than 8\n";
print "PASSWORD REJECTED\n";
accept_password();
}
#Check for digit
if($passwd =~ /[0-9]/) {
}else{
print "ERROR: No digit in your password\n";
print "PASSWORD REJECTED\n";
accept_password();
}
#Check for lowercase letter
if($passwd =~ /[a-z]/) {
}else{
print "ERROR: No lowercase letter in your password\n";
print "PASSWORD REJECTED\n";
accept_password();
}
#Check for Uppercase letter
if($passwd =~ /[A-Z]/) {
}else{
print "ERROR: No Uppercase letter in your password\n";
print "PASSWORD REJECTED\n";
accept_password();
}
#Check for special characters
#if(($passwd =~ /\@/)|| ($passwd =~ /#/) || ($passwd =~ /\$/)){
if( ($passwd =~ /\@/) || ($passwd =~ /\$/) || ($passwd =~ /\#/) ){
}else{
print "ERROR: No special characters \@ # \$\n";
print "PASSWORD REJECTED\n";
accept_password();
}
}
print "PASSWORD ACCEPTED\n";