in reply to use enlightenment

1. Is this a good practise ?

Not sure I understand what you mean by "this". Putting things in modules? Yes, probably. Using functions from a package by prepending their package name? Not quite so... Use Exporter to export things properly. See the Exports section of José's Guide for creating Perl modules for more information on how exporting works.

Replies are listed 'Best First'.
Re^2: use enlightenment
by tall_man (Parson) on Mar 08, 2005 at 16:33 UTC
    I don't agree that exporting is always preferable to using symbols with prepended package names. If you export a symbol you are simply creating an alias in the importing module's symbol table. Once you do, you have the possibility of colliding with a symbol exported from another module. Fully-qualified names also tell you where a function comes from, which allows the human reader to look it up more easily. It's a tradeoff for typing convenience.

    Exports aren't automatically visible across modules, either. To take the OP's example:

    package Foo; use strict; use base 'Exporter'; @Foo::EXPORT_OK = qw(foo); sub foo { print "Foo\n"; } 1; package Bar; use strict; use Foo qw(foo); sub bar { foo(); print "Bar\n"; } 1; package Something; use strict; use Bar; # This call will fail. foo();