in reply to Check for data in array

How is the data stored in the hash value? As a multi-line string? As an array reference? Hash reference, hashed by PID?

Replies are listed 'Best First'.
Re^2: Check for data in array
by fazedandconfused (Novice) on Feb 08, 2012 at 13:00 UTC

    I'm not sure as I didn't write all this code. Most of it is taken from a Xymon sample.

    Here is the peice of code that builds the Hash,

    while ($line = <STDIN>) { if ($line =~ /^\@\@client\#/) { # It's the start of a new client message - the header +looks like this: # @@client#830759/HOSTNAME|1169985951.340108|10.60.65. +152|HOSTNAME|sunos|sunos # Grab the hostname field from the header @hdrfields = split(/\|/, $line); $hostname = $hdrfields[3]; # Clear the variables we use to store the message in $msgtxt = ""; %sections = (); } elsif ($line =~ /^\@\@/) { # End of a message. Do something with it. processmessage(); } elsif ($line =~ /^\[(.+)\]/) { # Start of new message section. $cursection = $1; $sections{ $cursection } = "\n"; } else { # Add another line to the entire message text variable +, # and the the current section. $msgtxt = $msgtxt . $line; $sections{ $cursection } = $sections{ $cursection } . +$line; } }
      Use Data::Dumper, try
      warn Dumper \%sections;
      before matching the regexp. With your sample data contained as string in the hash, everything should work.

        I've added warn Dumper \%sections; into my script and it still doesn't work. Any further ideas?