Tuesday, July 1, 2008

Perl Hobby Scripts

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";

No comments: