It's a scoping problem. The quoted code (Grep2) isn't accessing the same %url hash as the other two pieces of code, which you could tell if you had warnings on. You get a warning about a "Useless use of list slice in void context" for that code.> (I think its some sort of quoting/scoping problem, > but I'm not sure exactly what).
Why aren't the others in void context? Grep is accessing the lexical %url because it's lexical to the file scope, and the Grep subroutine is defined in this file. And Grep3 (the third one) is accessing the same lexical %url because the anonymous sub acts as a closure (I think).
So Grep2 is looking at a different (not defined) %url, and is thus not actually a very good test in terms of benchmarking. :)
In reply to RE: Re: Algorithm Efficiency vs. Specialized Hardware?
by btrott
in thread Algorithm Efficiency vs. Specialized Hardware?
by Russ
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |