I'm wondering if this is something to do with the wonderous 'static my' trick. Essentially putting 'my $var if 0' has an odd effect, the compiler phase sees it so $var is indeed localised, but the interpreter phase doesn't see it so it's never initialised to zero(!).
The result? An ugly equivilence of static variables where it maintains it's value between calls.
With yours I think it'll be maintaining it's value from the previous call unless it's passed a parameter. Probably not what you wanted. Try..
my $cat; $cat = @_ if @_;
It may work.. I think this is a case of what you don't know hurting you, unfortunately.
Just found this old bit of code I knocked out to test the 'static my' effect. Think it makes things clear.
#!/usr/bin/perl -w use strict; for (my $i=0; $i<10; $i++) { count(); } sub count { my $count=0 if 0; print "Called $count times\n"; }
In reply to Re: 'my' buggy...
by Molt
in thread 'my' buggy...
by december
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |