Coding Bits and Logic

Various logic and code bits to help you with various scripting tasks.

Perl Array Comparison

Here's a great example for an array comparison mechanism in perl to find out what is in common, what is different, etc.

 


$ cat ./compare_array.pl
#!/usr/bin/perl

use strict;
use warnings;

my @array1;
my @array2;
my @diff;
my @isect;
my $item;
my %count;

@array1 = (1, 2, 4, 6, 7, 8);
@array2 = (1, 2, 3, 5, 6, 7);

@isect = ( );
@diff = ( );
%count = ( );

foreach $item (@array1, @array2) { $count{$item}++;}

foreach $item (keys %count) {
if ($count{$item} == 2) {
push @isect, $item;
} else {
push @diff, $item;
}
}

print "\nA Array = @array1\n";

print "\nB Array = @array2\n";

print "\nIntersect Array = @isect\n";

print "\nDiff Array = @diff\n\n";

exit 0;

$ ./compare_array.pl

A Array = 1 2 4 6 7 8

B Array = 1 2 3 5 6 7

Intersect Array = 6 1 7 2

Diff Array = 8 4 3 5

 

Perl Split Function Example

The perl split function is handy for breaking up a string into several values.  For example if you are reading lines from a file and want to split that line into some different values, manipulate them, and spit them into a new file.  If you're lucky, the line is delimited by something like a ^ (carrot) charcater.

So, source line is something like: 

larry^moe^curly

You can use a one liner like this to break up the line into 3 values...

($value1,$value2,$value3)=split(/\^/,$line);

Note how we had to escaple the ^ with a backslash.  So now ...

print "$value1 --- $value2 --- $value3";

will print "larry --- moe --- curly".  If there were numbers, you can quickly read in a data file, calculate some values and spill out a new results file.  Or split a string into component values to be used later... be creative!