>> Obviously, split(/  /, $line) doesn't produce the array I really want.

I don't understand the word 'obviously': what results are you getting?

Have you tried the safer 

split /\s+/, $line; # split on any sequence of whitespace

- Roger -


----- Original Message ----- 
From: "Matt Richter" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Tuesday, November 13, 2001 2:41 PM
Subject: Split a line with Multiple data types


> I'm trying to split a line from a PIX Firewall log file and put it into
> an array.
> The log entries look like:
>  
> Nov 13 07:28:55 10.0.0.3 %PIX-4-400025: IDS:2154 ICMP ping of death from
> 123.123.123.123 to 124.124.124.124 on interface outside 
> 
> Here is the code i've tried:
> .............................................................
> while ($line = <LOG>) {
>        if ($line =~ /PIX-4-4000/) {                      # Match PIX
> Message ID Type
>          @fields = split(/ /, $line);                         # Populate
> @fields with data
>          $month{$fields[0]}++;                            #
>          $day{$fields[0]." ".$fields[1]}++;            # Cat Month and
> Day
>          $fields[2] =~ /(\d{2}):/;                           # Parse
> Hour from Time
>          $ltime{$fields[0]." ".$fields[1]." ".$1}++; # Cat Date and Time
> $host{$fields[3]}++;
>          $pixcode{$fields[4]}++;
>          ............etc 
> .......................................................................
> Obviously, split(/  /, $line) doesn't produce the array I really want.
>  
> Here is the format of the log entries to parse.
>  
> Month Day Time Host PIXcode IDSCode Protocol Description SourceHost To
> DestinationHost On Interface InterfaceName
>  
> Here are the string details:
> Month : Always Three Letters
> Day : May be One or Two Digits. If one Digit, it is preceded by and
> extra space. i.e. " 9"  or "10"
> Time: Always the same format
> Host : Sometimes IP number, Sometimes Hostname
> PIXCode : Always %PIX-4-4000xx:
> IDSCode : Always IDS:xxxx
> Protocol : If exists, followed by space, Sometimes not there at all
> Description : Various string lengths (2 To 6 words)
> SourceHost : Always an IP Number
> To : Always exists
> DestinationHost : Always an IP Number
> On Interface : Always exists
> InterfaceName : Always One Word
>  
>  
> Thanks!
>  
> Matt Richter
> 


-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to