Fellow Monasterians,
I'm trying to get my head around my directory/file structure and how code gets passed around. To experiment I have laid out the barest of an example that still works, though I normally use CGI::Application and HTML::Template, but other than the instance script, the layout can be pretty much the same.
Questions: 1) General—is this a plausible layout? 2) Specific—why do I have to include use Common.pm in my Contact.pm, when it is using Main as base and Main already includes Common.pm? Other questions: what is inheriting what? if anything? or what could be inherited? and is that even the right word? Thanks in advance.
Structure:
/public_html/---+ | | | | | calling.cgi | | /applications/---+ | | Main.pm | Common.pm | /Contact/--+ | | Contact.pm
calling.cgi
#!/usr/local/bin/perl use lib "/usr/home/bradcathey/applications/"; use strict; use Contact::Contact; print "done<br />";
Main.pm
#!/usr/bin/perl use strict; use Common; #usually CGI::Application, plug-ins, HTML::Template, etc. print "Content-type: text/html\n\n"; print "main.pm<br />"; 1;
Common.pm
package Common; use strict; use Exporter 'import'; @EXPORT = qw( show_here ); sub show_here { print "common.pm<br />"; return "thanks for contacting us"; } 1;
Contact.pm
package Main::Contact; use base qw( Main ); use Common; #why? use strict; print "contact.pm<br />"; my $msg = show_here(); print $msg."<br />"; return 1;
html output:
main.pm contact.pm common.pm thanks for contacting us done
In reply to Understanding module structure and inheritance by bradcathey
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |