Peter Abbott wrote:

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/\.//;
                        }

correcto


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

incorrecto and hard to maintain

You've also introduced a very subtle bug that I could not, at first
glance, see. The $name substitution resets $1 ... $6.

Please write maintainable code that is easy to understand.

I wouldn't want to be given the second code example buried amongst
1000+ lines of perl and then asked to fix "the obscure bug".


cheers
rickw

--
________________________________________________________________
Rick Welykochy || Praxis Services || Internet Driving Instructor

The best way to accelerate a PC is 9.8 m/s2
     -- anon
--
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