On Sunday, July 14, 2002, at 07:21 , chris wrote:
> Sounds like I am unable to reference the sub unless I make the
> necessary changes in the package.
yes and no....
first the 'no side' - since you may need to 'get the code up
and running now' = you can Work Around the problem by fully
qualifying the path to the function - as it were....
I have used the trick of
use DTK::WebAccess;
...
DTK::WebAccess::dtk_openSocket_to_webPage( $host, $port, $fd);
and
use DTK::WebAccess qw/dtk_openSocket_to_webPage/;
...
dtk_openSocket_to_webPage( $host, $port, $fd);
in places - depending upon whether I am more or less angst
ridden about remembering WHERE a 'function' came from....
My persona rule of thumb for 'modules' is that IF I need to
'reference' a private 'function' { one I am not going to export }
or one I have exported - inside some other function - I do
the first style....
package FOO::BAR;
..
sub do_cool {
my ($foo,$bar,$baz) = @_;
...
return($cool_reality);
}
....
sub reality_check {
my ($input1, $input2) = @_;
....
my $state = FOO::BAR::do_cool($a, $b, $c);
...
}
...
This way i know that IF the user calls MY reality_check,
that I don't have to worry about which 'do_cool()' function
we are playing with.... { hence, IF I opt to restructure
later on - I know which one I meant to use as well... }
at times - simply to access a Single Function out of a module
without needing to Import Everything or anything specific
form the Module....
Think of it as
use FOO::BAR;
as, well the compile time directive of
{ require FOO::BAR ; import FOO::BAR }
and if nothing is expressly 'exported' into your name space
then You have to 'fully qualify' what you want to use in
that 'name space':
FOO::BAR::some_func(@some_args);
remember that a 'sub' in your script is a 'name space' element.
We tend to use the short hand of
my $got_back = some_func(@some_args);
since perl will look first for it as
my $got_back = main::some_func(@some_args);
since it IS a part of the 'main' name space....
just as:
my $main::got_back = main::some_func(@some_args);
if we were going to be - 'fully qualified'....
So one can IMPROVISE around the fact that your
'module' was 'built' some 'other way'.... that is
now causing you problems.
on the 'yes side' - making the changes will help you
better sort out which functions should be grouped together
and referenced in 'groups' by their 'tags'....
Think of this as the
WOW! I now have them all in one file!
How exactly do I want to 'export them back to scripts'?
type of problem....
> The use of %EXPORT_TAGS and
> @EXPORT_OK are considerations in the package's design. Am I
> understanding this correctly?
yes....
see specifically -
perldoc Exporter
do the preliminary reading in:
perlsub Perl subroutines
perlmod Perl modules: how they work
perlmodlib Perl modules: how to write and use
perlmodinstall Perl modules: how to install from CPAN
cf: perldoc h2xs - and you will find that it lays out a
really nice base line for your basic perl module.... including
some useful advice about
a) don't just export everything
b) some tricks on how to use export
ciao
drieux
---
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]