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


in reply to Re^2: how to make this perl code run
in thread how to make this perl code run

I tried putting the logic into a BEGIN block, but without success. It is perhaps too late on line 6.

When testing code samples, I name them 1.pl, 2.pl, 3.pl and so on. The next day, I remove all of them and start again from 1. It is shorter than using the node's id in the name, but still lets me keep several answers ready for improvement if there are objections, which simple junk.pl would not do :-)

لսႽ† ᥲᥒ⚪⟊Ⴙᘓᖇ Ꮅᘓᖇ⎱ Ⴙᥲ𝇋ƙᘓᖇ

Replies are listed 'Best First'.
Re^4: how to make this perl code run
by Anonymous Monk on May 16, 2013 at 21:25 UTC

    This untested code should work ...

    ... BEGIN { sub hi {}; sub hello {}; sub hola {}; }
      Wow, thank you! I did not try this one! It works and gives the expected output:
      Bareword "hi" not allowed while "strict subs" in use at ./1.pl line 3. Bareword "hello" not allowed while "strict subs" in use at ./1.pl line + 4. Bareword "hola" not allowed while "strict subs" in use at ./1.pl line +5. Execution of ./1.pl aborted due to compilation errors.
      لսႽ† ᥲᥒ⚪⟊Ⴙᘓᖇ Ꮅᘓᖇ⎱ Ⴙᥲ𝇋ƙᘓᖇ

        Any time!

        Besides, I did write "should" & "untested". 0:)

      > This untested code should work ...

      And you think none of us tested this already and we all were too modest to post a code that works???

      8)

      The parser needs to see the declaration before it parses the barewords.

      BEGIN-blocks don't change the parsing order, only the runtime order!

      Cheers Rolf

      ( addicted to the Perl Programming Language)

      update

      to be precise BEGIN-Block are run at parsing time, but the parsing order doesn't change. see perlmod

        Of course (about everybody being modest:>).

        In any case this did remind me of the reason to generate subs in BEGIN block near the very start of a module.