Home > Archive > PERL Miscellaneous > October 2006 > Question from the perlmod man pages.
You are viewing an archived Text-only version of the thread.
To view this thread in it's original format and/or if you want to reply to
this thread please [click here]
| Author |
Question from the perlmod man pages.
|
|
| grocery_stocker 2006-10-30, 7:10 pm |
| I'm sort of drawing a stump on the following:
"Perl packages may be nested inside other package names, so we can have
package names containing ::. But if we used that package name directly
as a filename it would make for unwieldy or impossible filenames on
some systems. Therefore, if a module's name is, say, Text::Soundex,
then its definition is actually found in the library file
Text/Soundex.pm."
Say I have a module name Text::Soundex. I use this in my Perl script
as:
use Text::Soundex;
I know there is a module called Soundex.pm. I also know there is a
directory
name with the name Text. However, would there also be a module named
Text.pm?
Chad
| |
| Jim Gibson 2006-10-30, 7:10 pm |
| In article <1162052151.603188.40550@b28g2000cwb.googlegroups.com>,
grocery_stocker <cdalten@gmail.com> wrote:
> I'm sort of drawing a stump on the following:
>
> "Perl packages may be nested inside other package names, so we can have
> package names containing ::. But if we used that package name directly
> as a filename it would make for unwieldy or impossible filenames on
> some systems. Therefore, if a module's name is, say, Text::Soundex,
> then its definition is actually found in the library file
> Text/Soundex.pm."
>
> Say I have a module name Text::Soundex. I use this in my Perl script
> as:
>
> use Text::Soundex;
>
> I know there is a module called Soundex.pm. I also know there is a
> directory
> name with the name Text. However, would there also be a module named
> Text.pm?
No, there need not be a module named Text.pm. The pattern A::B is a
naming convention, and does not establish a hierarchical relationship
between modules A and B or their symbol tables. See 'perldoc perlmod'
for details.
| |
| grocery_stocker 2006-10-30, 7:10 pm |
|
Jim Gibson wrote:
> In article <1162052151.603188.40550@b28g2000cwb.googlegroups.com>,
> grocery_stocker <cdalten@gmail.com> wrote:
>
>
> No, there need not be a module named Text.pm. The pattern A::B is a
> naming convention, and does not establish a hierarchical relationship
> between modules A and B or their symbol tables. See 'perldoc perlmod'
> for details.
The source of this confusion stems from the following lines of code:
#!/usr/bin/perl
# change these two lines
$server_port = 1234;
$identification_phrase = 'insert phrase here';
# redirect error messages to a logfile
open(STDERR, ">>/tmp/logserver.log");
# code stolen liberally from Perl Cookbook
use IO::Socket;
$logfile = $ARGV[0];
open(LOG, "<$logfile");
# read to the current end of the log
while(<LOG> ) {
}
$server = IO::Socket::INET->new(LocalPort => $server_port,
Type => SOCK_STREAM,
Reuse => 1,
Listen => 10 ) # or SOMAXCONN
or exit; # "Couldn't be a tcp server on port $server_port : $@\n";
while (($client,$client_address) = $server->accept()) {
($client_port, $client_ip) = unpack_sockaddr_in($client_address);
@decimal_address = unpack("C4", $client_ip);
$ip_number = join(".", @decimal_address);
warn "connection from $ip_number";
while(<$client> ) {
last if /$identification_phrase/;
}
warn "connection from $ip_number gave pass phrase";
$lines = 0;
while(<LOG> ) {
$lines++;
print $client $_;
}
warn "returned $lines lines to $ip_number";
close($client);
}
close($server);
Why go
use IO::Socket;
Why just not
use IO::Socket::INET;
in this case
| |
| xhoster@gmail.com 2006-10-30, 7:10 pm |
| "grocery_stocker" <cdalten@gmail.com> wrote:
> Jim Gibson wrote:
>
> The source of this confusion stems from the following lines of code:
>
> #!/usr/bin/perl
>
> # change these two lines
> $server_port = 1234;
> $identification_phrase = 'insert phrase here';
>
> # redirect error messages to a logfile
> open(STDERR, ">>/tmp/logserver.log");
>
> # code stolen liberally from Perl Cookbook
>
> use IO::Socket;
>
....
>
> $server = IO::Socket::INET->new(LocalPort => $server_port,
....
>
> Why go
>
> use IO::Socket;
>
> Why just not
>
> use IO::Socket::INET;
>
> in this case
No particular reason that I can think of. When you use IO::Socket, it
automatically uses IO::Socket::INET for you. That is just the kind of
relationship that IO::Socket and IO::Socket::INET have with each other.
Other modules have a more stand-offish relationship.
OK, maybe one reason to use IO::Socket rather than IO::Socket::INET is
that, if you decide to switch to the different kind of socket, (say, UNIX)
then you would only need to change the "new" line rather than changing both
the "new" and the "use".
Xho
--
-------------------- http://NewsReader.Com/ --------------------
Usenet Newsgroup Service $9.95/Month 30GB
|
|
|
|
|