Hello knowledgeable perl type people

     im still very new to perl and, iv got my script "working",  what
is does in searches  through a large data file finds the segments i
need and outputs
     the data in a more use-full format. As i said id does work but im
no to convinced the structure is very clean
     so i  thort maybe some one could give me some pointers.

yours
most gratefully RichT


scanPoller.cfg.pl==================================================

#!/usr/local/bin/perl

use strict;
use warnings;
use Getopt::Long;

my($inFile,$USAGE,$showKey,$site,$found,$foundKeys,@dataFile,@foundSegments,$value);

my($opt_inFile, $opt_showAll, $opt_help ) = (0,0,0);

my $feildName = "agentAddress";
my $showFields = "segment,agentAddress,community";

$USAGE = <<USAGE_TEXT;
usage: $0 [-inFile input filename] [-findFeild feildName (default is
agentAddress)]
          [-showFields feilds to output (default is
segment,agentAddress,community)] [-showAll show all fields]
          [-help this help text]
USAGE_TEXT


GetOptions (    "inFile=s",
                "findFeild=s"   => \$feildName,
                "showFeilds=s"  => \$showFields,
                "showAll",
                "help|h|H|?|HELP"
        );

if ($opt_help == 1) {print $USAGE; exit; } # print out help and exit 

# start finding results
if ($inFile){  # find  results if we have in -inFile
        open DFILE, "$opt_inFile"  # open $inFile and read in  or die
                or die " could not open $opt_inFile";
        @dataFile = <DFILE>;
        close DFILE;

        foreach $value (@dataFile) {  # loop  for each line/site in dataFile
                chomp $value ;
                @foundSegments=findVars($feildName,$value); 
        }
} elsif ($ARGV[0]) { # read in value from comandline

        foreach $value ($ARGV[0]) {  # loop  for each line/site in dataFile
                @foundSegments=findVars($feildName,$value);
        }
} else {print $USAGE; exit; }   #quit if no values are supplyed...


# start show results
if ($opt_showAll) { # if show all option then print out every thing
 for $found ( @foundSegments ) {
        print "\n" ;
        for $foundKeys (keys %$found) {
                print "$foundKeys,$found->{$foundKeys}\n";
        }
 }
} else {        # show chosen fields
 for $found ( @foundSegments ) {
        foreach $showKey (split /,/, $showFields) {
                print "$found->{$showKey},";    
        }
        print "\n";
 }
}

sub findVars {
############################################################
# Function Check Discover Results
#
############################################################


my($findKey, $findValue, $segmentFieldKey, $segmentFieldValue,
%segmentFields, $nullVar, @foundSegments);

# read in Search Key and Value  from parent NOTE make a check for this
$findKey=$_[0] || die "Missing Args $findKey $!" ;
$findValue=$_[1] || die "Missing Args $findValue $!" ;
chomp $findValue;
chomp $findKey;
#my $NH_HOME= $ENV[NH_HOME];  # point to the poller CFG file
my $NH_HOME= ".";  # point to the poller CFG file NOTE this is temp
for testing use above line in live


local $/ = "}\n";                       # set delimiter


open(POLLER, "$NH_HOME/poller.cfg") || die "can not open : $!";

while(<POLLER>) {
        next unless /^\s+segment/;
        s/\n\s+\}\n//g;
        s/["{]//g;
        foreach (split(/\n/)) {
                ($nullVar,$segmentFieldKey,$segmentFieldValue) = split(/\s+/,$_,3);
                $segmentFields{ $segmentFieldKey } = $segmentFieldValue ;
        }
        if ( $segmentFields{$findKey} eq $findValue ) {

                push @foundSegments, {%segmentFields } ; 
        }
        undef %segmentFields;
        my %segmentFields;
}
close POLLER;

return (@foundSegments);      # return the data
}; 

/scanPoller.cfg.pl==================================================


exampleExtract form poller.cfg==================================

    segment "customer-site-Bend" {
        agentAddress     "x.x.x.x"
        uniqueDeviceId   "dfofdkskhjkldsf"
        mibTranslationFile "cisco-frameRelay-cir.mtf"
        index            "2"
        index2           "400"
        deviceSpeed      "64000.0"
        deviceSpeed2     "64000.0"
        discoverMtf      "cisco-frameRelay-cir.mtf"
        index3           "7"
        community        "public"
        sysDescr         "Cisco Internetwork Operating System Software
IOS (tm) C1700 Software (C1700-Y-M), Version 12.1 blar blar..."
        sysName          "routerName"
        sysLoc           "siteLocation"
        ifDescr          "Serial0"
        ifType           "frame-relay"
        aliasName        "PVCreffNumber"
        nmsKey           "routerName Serial0 400"
        enterpriseId     "9"
        possibleLatencySources "concord, ciscoPing"
        fullDuplex       "1"
        mediaSpeed       "64000.0"
        mediaSpeed1      "64000.0"
        statistics       "1"
    }


exampleExtract form poller.cfg==================================

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to