> On Wed, Jan 14, 2004 at 06:22:58PM -0700, Jose Malacara wrote:
>> Can someone explain to me how to do multiline matching? I am trying to
>> extract three consecutive lines from a datafile containing multiple
>> records like this:
>>
Hi All well i was reading through and i have a similar problem
i have code that "works" but its all slow and nasty =(
wonder if any one can help...
the data is stored in a text file in the format below,
we could have up to 40000 entry's so its a big file (but running on a E450
with 4Gig ram so ;) )
the number of lines can vary but will always start with...
segment "name" {
agentAddress "IP"
more "info"
}
any (semi constructive) ideas suggestions welcome
RichT
database format-------------------------------------
segment "Birmingham-WAN0" {
agentAddress "127.0.0.1"
uniqueDeviceId "SomeHeXNumbers (123445)"
mibTranslationFile "ciscoMib2.mtf"
index "2"
parentName "Birmingham-RH"
deviceSpeed "64000.0"
deviceSpeed2 "128000.0"
discoverMtf "ciscoMib2.mtf"
community "SupperPassword"
sysDescr "long text telling you the Cisco ver"
sysName "ThisOniSTheRouterName"
sysLoc "Birmingham"
ifDescr "Serial0"
ifType "frame-relay"
aliasName "Cust12345"
nmsName "Birmingham-WAN0"
nmsKey "ThisOniSTheRouterName link Serial0"
enterpriseId "9"
possibleLatencySources "concord, ciscoPing"
fullDuplex "1"
mediaSpeed "128000.0"
mediaSpeed1 "128000.0"
statistics "1"
}
End The database format is like this -------------------------------------
My Current code ----------------------------------------------
sub checkResults {
my($NH_HOME,$i,@pollerCfgLine,@foundElements)=("/nethealth1","0","","");
#setup main vars
my($elementName,$elementSpeed,$elementRouterName,$elementAlias,$elementIP,$elementMIB);
# setting up names from poller
my($siteIPAdd)=$_[0];
open(POLLER, "$NH_HOME/poller/poller.cfg")|| die "can not open : $!"; #
open poller.cfg file , inport and close
my(@pollerCfg)=<POLLER>;
close POLLER;
foreach (@pollerCfg) { #start main loop throught all poller cfg lines
@pollerCfgLine=split(/"/,$_,3); #"split up type / value
if ($pollerCfgLine[0] =~ /^ +segment/) { #if we are on first line for
element key word "segment"
$elementName=$pollerCfgLine[1];
}elsif ($pollerCfgLine[0] =~ /^ +agentAddress/){
$elementIP=$pollerCfgLine[1];
}elsif ($pollerCfgLine[0] =~ /^ +mibTranslationFile/){
$elementMIB=$pollerCfgLine[1];
}elsif ($pollerCfgLine[0] =~ /^ +deviceSpeed2/){
$elementSpeed=$pollerCfgLine[1];
}elsif ($pollerCfgLine[0] =~ /^ +sysName/){
$elementRouterName=$pollerCfgLine[1];
}elsif ($pollerCfgLine[0] =~ /^ +aliasName/){
$elementAlias=$pollerCfgLine[1];
}elsif ($pollerCfgLine[0] =~ /^ +\}$/){
if ($elementIP eq $siteIPAdd) {
$foundElements[$i]=("$elementName,$elementSpeed,$elementRouterName,$elementAlias,$elementMIB\n");
$i++;
}
($elementName,$elementSpeed,$elementRouterName,$elementAlias,$elementIP,$elementMIB)=("","","","","","");
}
}
open(DISCOVERLOG, ">>tmp/discover.log.csv");
print DISCOVERLOG
"elementName,elementSpeed,elementRouterName,elementAlias,elementIP,elementMIB\n";
print DISCOVERLOG "@foundElements\n";
}
End My Current code ----------------------------------------------
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>