I put this script together while learning Perl (still a newbie), and also want to contribute back to the community for the knowledge I am getting.
The script has room for expansion and growth. Hope this help someone.
Code:#!/usr/bin/perl -w # # Wordlist manipulator, generator # By 0xyCont1n # use Getopt::Std; # # Message about how to use this script # sub usage(){ print STDERR << "EOF"; Worldlist manipulator by 0xyCont1n. Usage: Wmanip [options] filename Options: -h Help message (this) -w file Output filename -d word Append your word at the end -p word Prepend your word at the begining -A Apply all the condition below -e Replace e by 3 -s Replace s by 2 and 5 -a Replace a by @ and 4 -i Replace i by 1 -g Replace g by 5 -t Replace t by 7 -B Replace B by 8 -o Replace o by 0 -r Reverse word -l Lowercase word -u Uppercase word -U First letter uppercase Example: Wmanip -A -d 123 filename EOF exit; } #Get command line argument getopts( "AhesaigtBorluUw:p:d:", \%opt ) or usage(); usage() if $opt{h}; usage() unless ( $ARGV[0] and %opt ); #check if the file exist if ( ! -f $ARGV[0] ) { die "Seems like the file: '$ARGV[0]' doesn't exist!\nPlease try again.\n:( :(\n"; } # Get the arguments my $file = $ARGV[0]; my $temp = "$file.swp"; my $outfile = undef; if ( defined $opt{w}) { $outfile = $opt{w}; }else{ $outfile = "result.txt"; } # default file output open ( INFILE, $file) or die "Couldn't open file: $file\n"; open ( OUTFILE, ">$temp"); #Loop through the content of the file, line by line while ( <INFILE> ){ chomp; #Get ride of new line s/^\s+//; #Remove leading whitespace s/\s+$//; #Remove trailing whitespace print OUTFILE "$_\n"; # start the manipulation of word here # Lowercase if ( defined $opt{A} or defined $opt{l} ){ print OUTFILE "\L$_\n"; if ( defined $opt{p} and $opt{p} ne ''){ print OUTFILE "\L$opt{p}$_\n"; } if ( defined $opt{d} and $opt{d} ne ''){ print OUTFILE "\L$_$opt{d}\n"; } } # First letter upper case if ( defined $opt{A} or defined $opt{U} ){ print OUTFILE "\u$_\n"; if ( defined $opt{p} and $opt{p} ne ''){ print OUTFILE "\u$opt{p}$_\n"; } if ( defined $opt{d} and $opt{d} ne ''){ print OUTFILE "\u$_$opt{d}\n"; } } # Uppercase if ( defined $opt{A} or defined $opt{u} ){ print OUTFILE "\U$_\n"; if ( defined $opt{p} and $opt{p} ne ''){ print OUTFILE "\U$opt{p}$_\n"; } if ( defined $opt{d} and $opt{d} ne ''){ print OUTFILE "\U$_$opt{d}\n"; } } # Reverse the word if ( ( defined $opt{r} or defined $opt{A} ) and length($_) > 1 ){ my $r = reverse $_ ; print OUTFILE "$r\n"; if ( defined $opt{p} and $opt{p} ne ''){ print OUTFILE "\u$opt{p}$r\n"; } if ( defined $opt{d} and $opt{d} ne ''){ print OUTFILE "\u$r$opt{d}\n"; } } # Character replacement # a -> @ | 4 if ( defined $opt{A} or defined $opt{a} ){ if ( tr/a/\@/ ) { print OUTFILE "$_\n"; if ( defined $opt{p} and $opt{p} ne ''){ print OUTFILE "\u$opt{p}$_\n"; } if ( defined $opt{d} and $opt{d} ne ''){ print OUTFILE "\u$_$opt{d}\n"; } } if ( tr/a/4/) { print OUTFILE "$_\n"; if ( defined $opt{p} and $opt{p} ne ''){ print OUTFILE "\u$opt{p}$_\n"; } if ( defined $opt{d} and $opt{d} ne ''){ print OUTFILE "\u$_$opt{d}\n"; } } } # e -> 3 if ( tr/e/3/ and ( defined $opt{A} or defined $opt{e} ) ){ print OUTFILE "$_\n" ; if ( defined $opt{p} and $opt{p} ne ''){ print OUTFILE "\u$opt{p}$_\n"; } if ( defined $opt{d} and $opt{d} ne ''){ print OUTFILE "\u$_$opt{d}\n"; } } # s -> 2 | 5 if ( defined $opt{A} or defined $opt{s} ){ if ( tr/s/2/ ) { print OUTFILE "$_\n"; } if ( tr/s/5/ ) { print OUTFILE "$_\n"; } } # i -> 1 if ( tr/i/1/ and ( defined $opt{A} or defined $opt{i} ) ){ print OUTFILE "$_\n"; if ( defined $opt{p} and $opt{p} ne ''){ print OUTFILE "\u$opt{p}$_\n"; } if ( defined $opt{d} and $opt{d} ne ''){ print OUTFILE "\u$_$opt{d}\n"; } } # g -> 5 if ( tr/g/5/ and ( defined $opt{A} or defined $opt{g} ) ){ print OUTFILE "$_\n"; if ( defined $opt{p} and $opt{p} ne ''){ print OUTFILE "\u$opt{p}$_\n"; } if ( defined $opt{d} and $opt{d} ne ''){ print OUTFILE "\u$_$opt{d}\n"; } } # t -> 7 if ( tr/t/7/ and ( defined $opt{A} or defined $opt{t} ) ){ print OUTFILE "$_\n"; if ( defined $opt{p} and $opt{p} ne ''){ print OUTFILE "\u$opt{p}$_\n"; } if ( defined $opt{d} and $opt{d} ne ''){ print OUTFILE "\u$_$opt{d}\n"; } } # o -> 0 if ( tr/o/0/ and ( defined $opt{A} or defined $opt{o} ) ){ print OUTFILE "$_\n"; if ( defined $opt{p} and $opt{p} ne ''){ print OUTFILE "\u$opt{p}$_\n"; } if ( defined $opt{d} and $opt{d} ne ''){ print OUTFILE "\u$_$opt{d}\n"; } } # B - 8 if ( tr/B/8/ and ( defined $opt{A} or defined $opt{B} ) ){ print OUTFILE "$_\n"; if ( defined $opt{p} and $opt{p} ne ''){ print OUTFILE "\u$opt{p}$_\n"; } if ( defined $opt{d} and $opt{d} ne ''){ print OUTFILE "\u$_$opt{d}\n"; } } } # End of while loop ( end of reading the file) close (INFILE); close (OUTFILE); # Sorting and removal of duplicate entries system ("uniq $temp | sort -f > $outfile"); # Deleting temporary created file unlink($temp); print "Finished !!!\nOutput in file: $outfile \n";