#!/usr/local/perl -w
package VRTSAgent;
use Carp;
use Data::Dumper;
#######################################
## This is the ADT for an agent.
#######################################
my %fields = (
agent =>undef,
os =>%os,
version =>@versions,
);
sub new {
my $class = shift;
my $self = {%fields};
bless $self, $class;
return $self;
}
sub agent {
if ($_[1]) {
$agent = $_[1];
}
return $agent;
}
sub version {
if ($_[2]) {
$version[$_[1]]=$_[2];
}
return $version[$_[1]];
}
sub os {
if ($_[3]) {
$os{$_[1]}{$_[2]} = $_[3];
}
return $os{$_[1]}{$_[2]};
}
sub os_keys {
return keys (%os);
}
sub os_key_each{
return keys ( %{$os{$_[1]}} );
}
sub _dump_os {
print Dumper(\%os);
}
sub make_Versions {
my ($key, @keys, @each, %ver);
@keys = &os_keys;
foreach $key (@keys) {
@each = keys ( %{$os{$key}} );
foreach $tmp (@each) {
$ver{$tmp}=1;
}
}
@versions = keys (%ver);
@versions = sort @versions;
}
sub get_versions {
return @versions;
}
sub DESTROY {
}
####
#!/usr/bin/perl -w
use strict;
use VRTSAgent;
use Data::Dumper;
my (@lines, $i, @tmp);
my (@agents, @keys);
my ($infile, $outfile);
$infile = "matrix.csv";
$outfile = "out.csv";
open (INFILE, $infile);
while () {
chomp;
push @lines, $_;
}
close INFILE;
my $j = -1 ;
my $lastAgent = "something thats not an agent";
my (@osKey, $var, $var2, $var3, @tmp2, $agent);
for ($i=2; $i < @lines; $i++) {
@tmp = split /,/,$lines[$i];
if($lastAgent ne $tmp[3]){
$agents[++$j]= new VRTSAgent;
$agents[$j]->new();
$lastAgent = $tmp[3];
$agents[$j]->agent($tmp[3]);
print "New Agent == $tmp[3]\n";
}
$agents[$j]->os($tmp[1]." ".$tmp[2],$tmp[4]." ".$tmp[5],$tmp[6]);
@tmp = undef;
}
foreach $var (@agents) {
$var->make_Versions;
}
my @ver;
foreach $var (@agents) {
$agent = $var->agent;
@ver= $var->get_versions;
foreach $var2 (@ver){
#print "$agent $var2 \n";
}
}
####
SUN,Solaris 8 ,64-bit,Oracle ServerFree,9.0.1,64-bit,yes,
IBM,AIX 4.3.3 ,64-bit,SAP,3.x ,64-bit,yes,
IBM,AIX 4.3.3 ,64-bit,SAP,4.x,,yes,
HP,HP-UX 11.11 ,32-bit,Sybase ,ASE 12.0,,yes,4.5A
HP,HP-UX 11.11 ,64-bit,Sybase ,ASE 12.0,64-bit,yes,4.5A
SGI,IRIX 6.5.10; 6.5.11; 6.5.12 ,64-bit,Sybase ,ASE 11.9.2,,yes,