Here's a simple module to demonstrate that
And here's a script that uses
This script can call
SomeModule because these two functions are listed in
@EXPORT. Functions listed in
@EXPORT are by default exported into the user's namespace.
ok_one, on the other hand, cannot be called directly as it is not listed in
@EXPORT. It can, however, be called so
Here's another script:
Now, I specify the identifiers I want to have imported into my namespace (
qw(ok_one ok_two)). Accordingly, I can call these.
I cannot call exp_one (which I could call in the first script), because as soon as I begin specifying identifiers to be exported I need to specify all of them.
Of course, it will soon be tiresome to always indicate which functions I want to have imported. Therefore, I can define tags with the
%EXPORT_TAGS hash that groups multiple identifiers under a tag. For example, the tag all imports all functions. In my case, I just used the combined values of
@EXPORT_OK. This is demonstrated with the third script:
Lastly, I can import some functions, too: