Study the following short program and its output:
Make sure you understand why each output line is generated (except the one corresponding to the code line marked as "Perl trivia"--that one's optional), and why un-commenting out the line that begins with # bar causes a run-time error. If, after you work through it, something still doesn't make sense, ask.use strict; sub Foo::bar { print 'called on line ', (caller)[2], ": $_[0]\n" and $_[0]; } my $frobozz = bless \&Foo::bar, 'Foo'; $frobozz->bar('eenie'); $frobozz->bar('eenie')->('meenie'); $frobozz->('eenie'); Foo->bar('eenie'); Foo->bar('eenie')->bar('meenie'); Foo::bar('eenie'); 'Foo'->bar('eenie'); 'Foo::bar'->('eenie'); "Foo'bar"->('eenie'); # Perl trivia # bar('eenie'); # bombs! require Exporter; @Foo::ISA = ('Exporter'); @Foo::EXPORT_OK = ('bar'); Foo->import('bar'); bar('eenie'); __END__
Note! The above is certainly not an example of good coding. Its only purpose is to illustrate some aspects of Perl.
the lowliest monk
In reply to Re: Writing Modules/namespace polution
by tlm
in thread Writing Modules/namespace polution
by thekestrel
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |