http://www.perlmonks.org?node_id=1137351


in reply to Unable to Understand grep and hash use for prime no.

This node falls below the community's threshold of quality. You may see it by logging in.

Replies are listed 'Best First'.
Re^2: Unable to Understand grep and hash use for prime no.
by Anonymous Monk on Aug 04, 2015 at 12:01 UTC
    ... used or instead of an if-statement because, when using grep, he had to.

    No, s/he didn't "have" to.

    print "$_\n" for grep { if ($_%2) {$a=1} else {$a=0} $a } 1..10;

    Yes, it's uglier, but possible.

Re^2: Unable to Understand grep and hash use for prime no.
by 1nickt (Canon) on Aug 04, 2015 at 15:21 UTC

    The OP does not use grep and hashes to calculate prime numbers. It uses a subroutine called is_prime(), which is not included in the posted code.

    Could you post your version, so we can learn from it?

    The way forward always starts with a minimal test.

      It looks like it is from "Beginning Perl" by Curtis Poe. Page 300 has the whole program, page 301 discusses is_prime() which is non-optimized trial division (checks divisibility by all integers up to sqrt(n)). Page 302 discusses the code in question which is introducing using a hash to cache the result.

      In particular, the test suite includes duplicates in its list. That's why the hash is used.