This post will teach you how to generate random unique codes in PERL. Just follow the simple steps below. Enjoy!!
1. Create an array of character set combination. Below was set to 29 alphanumeric characters excluding other characters with similarities.
my @arrCharset = split //, "abcdefhjkmnpqrstuvwxyz2345678"; # 29 alphanumeric characters
2. Set the number of random codes you want to generate and set it into the loop.
$intCodes = 540000; # this will generate 540,000 random codes.
for ($i=1; $i<=$intCodes; $i++)
{
##.......... see step #3 ..........
##.......... see step #5 ..........
}
3. Inside the loop in step #2, set the number of characters you wanted on each code and create a loop to generate random code.
$intCharCnt = 6; # this will generate 6 characters per code.
for ($l=1; $l<=$intCharCnt; $l++)
{
##.......... see step #4 ..........
}
4. Inside the loop in step #3, pick a random character in the character set in step #1 and generate the code.
$intRand = int(rand(scalar(@arrCharset)));
$strCode .= $arrCharset[$intRand];
5. Once the code was generated, check this with hashes of codes if exists. If exists deduct the counter of random codes we set in step #2, If not then write to hash. This will make the generation of codes unique.
if (exists($hshCodes{$strCode}))
{
$i --;
}
else
{
$hshCodes{$strCode} = 1;
print "$strCode\n";
}
Please see below for the complete random unique code generator.
#!/usr/bin/perl
my @arrCharset = split //, "abcdefhjkmnpqrstuvwxyz2345678"; # 29 alphanumeric characters
my %hshCodes;
my ($i, $l, $strCode);
$intCodes = 540000; # this will generate 540,000 random codes.
$intCharCnt = 6; # this will generate 6 characters per code.
for ($i=1; $i<=$intCodes; $i++)
{
$strCode = '';
for ($l=1; $l<=$intCharCnt; $l++)
{
$intRand = int(rand(scalar(@arrCharset)));
$strCode .= $arrCharset[$intRand];
}
if (exists($hshCodes{$strCode}))
{
$i --;
}
else
{
$hshCodes{$strCode} = 1;
print "$strCode\n";
}
}
1;
You should know your purpose in life, make a difference, and believe in yourself. Always think positive, take the risk and move forward. Do that, then before you know it, you're already the man you always wanted. Cheers!!
▼
Wednesday, April 13, 2011
Saturday, April 9, 2011
GREP command in linux / unix
GREP command searches the file for a lines match to a string, words, or characters we pass on.
Syntax: grep [-option] 'search word' /path/to/file
Options are as follows:
Sample GREP commands:
- default grep command without using an option.
$ grep 'word' /path/to/file
- ignoring word cases and matches
$ grep -i 'word'/path/to/file
- using regex to get all the lines that matches
$ grep -P "word1|word2" /path/to/file
$ grep -P "^word3" /path/to/file
- matching the exact words in a line
$ grep -w "word" /path/to/file
- get the file names that matches the search word.
$ grep -l "init()" /path/to/file*
- invert matches to the line
$ grep -v "word" /path/to/file
- grep command combining options and uses pipe to execute next grep command.
$ grep -ivP "word1|word2" /path/to/file
$ grep -i "word" /path/to/file | grep -vP "word2"
Syntax: grep [-option] 'search word' /path/to/file
Options are as follows:
- -i : to ignore word case.
- -r : recursively read files under each directory.
- -w : to get the matching word only.
- -c : to count number of lines that the search word matches.
- -P : to use regex command within the grep command.
- -l : to list the file names matching the search word.
- -v : to get lines that doesn't match the search word.
Sample GREP commands:
- default grep command without using an option.
$ grep 'word' /path/to/file
- ignoring word cases and matches
$ grep -i 'word'/path/to/file
- using regex to get all the lines that matches
$ grep -P "word1|word2" /path/to/file
$ grep -P "^word3" /path/to/file
- matching the exact words in a line
$ grep -w "word" /path/to/file
- get the file names that matches the search word.
$ grep -l "init()" /path/to/file*
- invert matches to the line
$ grep -v "word" /path/to/file
- grep command combining options and uses pipe to execute next grep command.
$ grep -ivP "word1|word2" /path/to/file
$ grep -i "word" /path/to/file | grep -vP "word2"
IN_ARRAY sub function in PERL
IN_ARRAY is one of the common functionality in PHP that searches data in an array - http://php.net/in_array. This function takes 2 parameters: (1) the search key and (2) the array stack, it returns boolean whether found or not.
This functionality lacks in Perl and with this post, we can now have it in Perl.
The function below follows the same parameters we set in PHP: in_array(<search key>, <array>). This function map the array into hash in which Perl can do searches and returns 1 or 0.
Hope you like it!! Enjoy!
sub in_array
{
my ($search_key, @arr) = @_;
my %items = map {$_ => 1} @arr;
return (exists($items{$search_key})) ? 1 : 0;
}
Usage:
#!/usr/bin/perl
my @arr = ('Paul','Raf','Tina','Mich');
sub in_array
{
my ($search_key, @arr) = @_;
my %items = map {$_ => 1} @arr;
return (exists($items{$search_key})) ? 1 : 0;
}
if (&in_array('Paul', @arr))
{
print "Got you Paul!!\n";
}
else
{
print "Paul not found!!\n";
}
1;
Output:
paulgonzaga:Perl paulgonzaga$ perl in_array.pl
Got you Paul!!
paulgonzaga:Perl paulgonzaga$
This functionality lacks in Perl and with this post, we can now have it in Perl.
The function below follows the same parameters we set in PHP: in_array(<search key>, <array>). This function map the array into hash in which Perl can do searches and returns 1 or 0.
Hope you like it!! Enjoy!
sub in_array
{
my ($search_key, @arr) = @_;
my %items = map {$_ => 1} @arr;
return (exists($items{$search_key})) ? 1 : 0;
}
Usage:
#!/usr/bin/perl
my @arr = ('Paul','Raf','Tina','Mich');
sub in_array
{
my ($search_key, @arr) = @_;
my %items = map {$_ => 1} @arr;
return (exists($items{$search_key})) ? 1 : 0;
}
if (&in_array('Paul', @arr))
{
print "Got you Paul!!\n";
}
else
{
print "Paul not found!!\n";
}
1;
Output:
paulgonzaga:Perl paulgonzaga$ perl in_array.pl
Got you Paul!!
paulgonzaga:Perl paulgonzaga$
Sunday, April 3, 2011
File handling in PERL
We have 2 ways on how to write to a file in PERL.
The script below will create and write to a file overwritten the data inside the file. The script will automatically creates a file if it doesn't exist. An error will return if there's a file permission denied or directory path doesn't exist.
open FHFILE, "> file1.txt" or die "file can't be created: $!";
print FHFILE "test data\n";
close FHFILE;
The script below will create and append to a file. Same with #1, it automatically creates a file and an error will return if there's a file permission denied or directory path doesn't exist.
open FHFILE, ">> file1.txt" or die "file can't be created: $!";
print FHFILE "test data\n";
close FHFILE;
The script below will read the file then pass the data into an array. An error will return if file is not readable.
open FHFILE, "< file1.txt" or die "error reading file: $!";
@arrData = <FHFILE>;
close FHFILE;
The script below will create and write to a file overwritten the data inside the file. The script will automatically creates a file if it doesn't exist. An error will return if there's a file permission denied or directory path doesn't exist.
open FHFILE, "> file1.txt" or die "file can't be created: $!";
print FHFILE "test data\n";
close FHFILE;
The script below will create and append to a file. Same with #1, it automatically creates a file and an error will return if there's a file permission denied or directory path doesn't exist.
open FHFILE, ">> file1.txt" or die "file can't be created: $!";
print FHFILE "test data\n";
close FHFILE;
The script below will read the file then pass the data into an array. An error will return if file is not readable.
open FHFILE, "< file1.txt" or die "error reading file: $!";
@arrData = <FHFILE>;
close FHFILE;