[Omaha.pm] bad perl - need help - dispatch table
Jay Hannah
jay at jays.net
Wed Aug 25 22:44:10 CDT 2004
On Aug 25, 2004, at 9:29 PM, Terry wrote:
> I have two sets of subs. One set has similarities and so does the
> other.
Perhaps you should probably have 2 packages, as I described earlier.
Group the subs by concept, and have one package per concept. Easier to
maintain and support in the long run.
$ cat p1.pm
package p1;
sub x { print "x"; }
1;
$ cat p2.pm
package p2;
use Exporter;
@ISA = qw(Exporter);
@EXPORT = qw(&y &z);
sub y { print "y"; }
sub z { print "z"; }
sub a { print "a"; }
1;
$ cat j.pl
#!/usr/bin/perl
use p1;
use p2;
# You can explicitly identify the packages your subs are in
&p1::x;
&p2::y;
# Or if your .pm's export their subs, like p2.pm does, you can call
# the sub # as if it were defined in main. (Not necessarily
recommended.)
# see perldoc Exporter
&y;
&z;
$ ./j.pl
xyyz$
> The problem is that they are invoked at different times in
> main. So I don't know how to have them all in one sub.
You can invoke any sub that lives anywhere at any time. perl has not
problem with that. Whether or not you could/should have one smart
subroutine is a separate question. It depends on what the subs are
doing and how similar the different subs are. If you get a few of your
subs written you might want to post 'em, and see if anyone has any
tips.
> This is
> getting pretty confusing. I think I am going to implement what you
> suggested with separate subs for each to start with. I will call it
> 0.1. I will re-invent the ocean in 0.2. :)
Yup. Start writing subs, and if you see that you're writing similar
blocks of code, go back and make your code smarter and shorter.
Nowadays, that's called "refactoring". It's good for you. -grin-
j
More information about the Omaha-pm
mailing list