Ravi Malghan am Donnerstag, 27. April 2006 19.52:

Hello Ravi

(please start a new thread for a new question)

> Hi: I am extracting some value from $complete_event as
> follows. What can I check to see if the extraction
> returned a valid value? "if($_)" seems to be giving
> incorrect values. 

look at perldoc perlvar for the meaning of the $_ var.
It's not what you want in your case below.

You're more interested in the question "What can I check to see if the 
extraction succeeded?"; 
if the extracted value is valid or not is a secondary problem and is 
implementation specific.

> In the following statement, $srcIp 
> is being set to an old extracted value if there is no
> valid value following srcIP in my $complete_string
> instead of 0.

True; from perldoc perlre:

"NOTE: failed matches in Perl do not reset the match variables, which makes it 
easier to write code that tests for a series of more specific cases and 
remembers the best match."

> $complete_event =~ /srcIp=(.+) srcPort=/;
>         if($_) {$srcIp = $1;}
>           else {$srcIp = 0;}

Only use $1 etc. if the match succeeded:

if ($complete_event =~ /srcIp=(.+) srcPort=/) {
  if($1) {$srcIp = $1;}
  else {$srcIp = 0;}
}

or shorter

my $srcIp=$1 ? $1 : 0
  if $complete_event =~ /srcIp=(.+) srcPort=/;

Eventually you also want to be more specific in what is a valid value to 
extract, at least ([\d.]+) instead of (.+) .

hope this helps

Dani

-- 
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