On Wed, Apr 2, 2008 at 3:09 PM, Peter Abbott <[EMAIL PROTECTED]> wrote:
> Can anyone with greater knowledge than myself explain this regex
>  behaviour.
>  This code segment works as intended:
>
>
>  if ( $_ =~ m/^Box(\d) ([A-Z]+(\. | ?)[A-Z]* ?[A-Z]*).*?(\d).*?(\d\d\.\d
>  \d).*?(\d*\.\d\d)L/) {
>                 $box = $1;
>                 $name = $2;
>                 $place = $4;
>                 $time = $5;
>                 $margin = $6;
>                 $name =~ s/\.//;
>                         }
>
>  However if the $name substitution is inserted above $place like so it
>  fails to allocate values to $place, $time and $margin.
>
>
>  if ( $_ =~ m/^Box(\d) ([A-Z]+(\. | ?)[A-Z]* ?[A-Z]*).*?(\d).*?(\d\d\.\d
>  \d).*?(\d*\.\d\d)L/) {
>                 $box = $1;
>                 $name = $2;
>                 $name =~ s/\.//;
>                 $place = $4;
>                 $time = $5;
>                 $margin = $6;
>                         }
>  Undoubtedly something simple that a self taught dummy has failed to
>  grasp.

I suspect that the added line resets the back-references (the
"$1".."$6"). Try moving it under the $margin assignment (i.e. until
after you are done with the back-references).

--Amos
-- 
SLUG - Sydney Linux User's Group Mailing List - http://slug.org.au/
Subscription info and FAQs: http://slug.org.au/faq/mailinglists.html

Reply via email to