Jim wrote:
> I've never encountered this before but I have to be doing something
> wrong.
>
> snippet of code:
>
> ]$ perl -e '
> > $var = "Company Online (Company Systems) NETBLK-COM-5BLK
> > (NET-24-256-0-0-1)"; $var =~ /.*? \(.*\) (.*?) \(.*?\)/;
> > print $1,"\n";
> >
> > $var = "NetBlock: NETBLK-10H-6BLK";
> > $var =~ /sdddd\(.*?\) (.*?) \(.*?\)/;
> > print $1,"\n";
> > '
> NETBLK-COM-5BLK
> NETBLK-COM-5BLK
>
>
> Why isn't $1 getting updated with the next implicit match?  It should
> fail but its returning the first $1 match.  I can't unset $1 because
> it is a read-only variable.  This doesn't even work if I change the
> second $var to $var2 because of course $1 is the same the way through.
>
> VERY frustrating.

This is the way the $1, $2, etc. variables work. They are only set if there
is a successful match. Otherwise, they simply retain whatever previous value
they had.

You either need to test that the match worked:

   if (/(\w+)/) {
      # $1 is now set
      print $1;
   }

Or, evaluate the match in list context:

   my ($word) = /(\w+)/;      # $word will be undef if no match





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

Reply via email to