in reply to Re^2: Exporter. Correct way to override import?
in thread Exporter. Correct way to override import?

So what? Even if it is presented as an option, you should still not pick the version that makes no sense (unless you need compatibility with pre-5.8.3 builds of Perl).

  • Comment on Re^3: Exporter. Correct way to override import?

Replies are listed 'Best First'.
Re^4: Exporter. Correct way to override import? (archaic perldoc)
by LanX (Saint) on May 06, 2018 at 20:06 UTC
    I had no time to answer earlier, but I fully agree with afoken.

    Unfortunately do the perldocs often reflect only an archaic Perl.

    It's no wonder if beginners become confused and frustrated.

    For instance we keep telling them to use strict and declare variables while a big part of the docs isn't strict at all.

    I consider this a real problem, because it's damaging the reputation of Perl.

    Cheers Rolf
    (addicted to the Perl Programming Language and ☆☆☆☆ :)
    Wikisyntax for the Monastery

      Unfortunately do the perldocs often reflect only an archaic Perl.

      Again, not so. Exporter includes

      package YourModule; use Exporter 'import'; # gives you Exporter's import() method directly @EXPORT_OK = qw(munge frobnicate); # symbols to export on request

        The Exporter POD also includes (in the Good Practices section no less):

        When using Exporter with the standard strict and warnings pragmas, the our keyword is needed to declare the package variables @EXPORT_OK, @EXPORT, @ISA, etc.

        our @ISA = qw(Exporter); our @EXPORT_OK = qw(munge frobnicate);

      Well, I tried to do it without the ISA. But with the serious hack that I am trying to make as an experiment I can't get around just using export_to_level. export_to_level is not exported by Exporter by the way. The goto breaks the import method that I made because of its recursive nature and so I fully depend on export_to_level. I have not been able to figure out yet how to use the function without the ISA. Also Exporter->export_to_level( 1, @_ ) ; does not seem to work for me. Errors are of the kind: <Function Name> is not exported by the Exporter module.

        Please explain:
        • What is your goal?
        • What do you want to do in your own import()?
        • Why do you need Exporter if you want to write your own import()?

        ->export_to_level can't be "exported", since it is a method. (expects the obj/class as first argument). In order to work you need to require or use exporter first.

        Cheers Rolf
        (addicted to the Perl Programming Language and ☆☆☆☆ :)
        Wikisyntax for the Monastery