[28155] in Perl-Users-Digest
Perl-Users Digest, Issue: 9519 Volume: 10
daemon@ATHENA.MIT.EDU (Perl-Users Digest)
Mon Jul 24 21:05:50 2006
Date: Mon, 24 Jul 2006 18:05:05 -0700 (PDT)
From: Perl-Users Digest <Perl-Users-Request@ruby.OCE.ORST.EDU>
To: Perl-Users@ruby.OCE.ORST.EDU (Perl-Users Digest)
Perl-Users Digest Mon, 24 Jul 2006 Volume: 10 Number: 9519
Today's topics:
Re: Idiot Q: How to find index number of HASH match? <franzl.wisseworst@mailinator.net>
Re: Idiot Q: How to find index number of HASH match? <flavell@physics.gla.ac.uk>
Re: Idiot Q: How to find index number of HASH match? <David.Squire@no.spam.from.here.au>
Re: Idiot Q: How to find index number of HASH match? <franzl.wisseworst@mailinator.net>
Re: Idiot Q: How to find index number of HASH match? <mumia.w.18.spam+nospam.usenet@earthlink.net>
Re: method connecting outlook express to webmail script <lloyde@dodo.com.au>
New release of Config-Model <domi@komarr.grenoble.hp.com>
Re: numeric sort on string like a123-3 <tzz@lifelogs.com>
Re: Perl not deleting file content if file on server <hjp-usenet2@hjp.at>
Re: problems using oddmuse with mod_perl2 inside apache (Fergus McMenemie)
Questions about (non-blocking) sockets <spam.trap.never.read@mailinator.com>
Re: Questions about (non-blocking) sockets xhoster@gmail.com
Re: Questions about (non-blocking) sockets <uri@stemsystems.com>
Re: Semantics of threads <benmorrow@tiscali.co.uk>
Re: Semantics of threads xhoster@gmail.com
Use MSXML in perl without registration <shah.vinay@gmail.com>
Digest Administrivia (Last modified: 6 Apr 01) (Perl-Users-Digest Admin)
----------------------------------------------------------------------
Date: Mon, 24 Jul 2006 19:55:34 +0200
From: Franzl Wisseworst <franzl.wisseworst@mailinator.net>
Subject: Re: Idiot Q: How to find index number of HASH match?
Message-Id: <ea32er$9t5$03$1@news.t-online.com>
Mumia W. wrote:
[..]
> my $match_index = $obj_en->Indices($current::page);
> my $string = defined $match_index ? $match_index : "404.html";
[..]
> my $string = $obj_de->Keys($match_index);
Another (stupid) question: I presume by the above code the string
"404.html" is meant to be returned in case $current::page has no match in
the tied hash array. But if the page does not exist my $string always
defaults to index 1 of the other array for some reason. In other words: ...
print $string;
... returns the match in the corresponding hash array correctly as it
should if a match is found, while if no matching $current::page is found,
$match_index always contains an empty string. Not the "404.html" string.
It is no problem to get around it as follows: ...
if ($match_index eq ""){
print "404.html";
}
else {
print $string;
}
... but I don't think that was the general idea. Perhaps it's something in
the line:
my $string = defined $match_index ? $match_index : "404.html";
Or maybe I'm handling what's returned in a wrong way? In any case, the
right result is there in a roundabout way.
------------------------------
Date: Mon, 24 Jul 2006 20:12:50 +0100
From: "Alan J. Flavell" <flavell@physics.gla.ac.uk>
Subject: Re: Idiot Q: How to find index number of HASH match?
Message-Id: <Pine.LNX.4.64.0607242007420.1773@ppepc20.ph.gla.ac.uk>
On Mon, 24 Jul 2006, Franzl Wisseworst wrote:
> Mumia W. wrote:
..
> > my $string = defined $match_index ? $match_index : "404.html";
>
> Another (stupid) question: I presume by the above code the string
> "404.html" is meant to be returned in case $current::page has no match in
> the tied hash array. But if the page does not exist my $string always
> defaults to index 1 of the other array for some reason.
If 404.html is supposed to be in reference to the HTTP return code for
"page not found", then there does seem to be a problem with this
(unless there's some machinery elsewhere that I haven't seen).
Returning a page called 404.html (presumably with an HTTP return code
200 = OK) is a weak apology for sending a real HTTP 404 return code,
to tell every client (browser, indexing bot or whatever) that the page
really doesn't exist.
Slightly off-topic for this group, I admit, but I thought it needed
mentioning.
------------------------------
Date: Mon, 24 Jul 2006 20:21:59 +0100
From: David Squire <David.Squire@no.spam.from.here.au>
Subject: Re: Idiot Q: How to find index number of HASH match?
Message-Id: <ea36k3$p39$1@gemini.csx.cam.ac.uk>
Alan J. Flavell wrote:
> On Mon, 24 Jul 2006, Franzl Wisseworst wrote:
>
>> Mumia W. wrote:
> ..
>>> my $string = defined $match_index ? $match_index : "404.html";
>> Another (stupid) question: I presume by the above code the string
>> "404.html" is meant to be returned in case $current::page has no match in
>> the tied hash array. But if the page does not exist my $string always
>> defaults to index 1 of the other array for some reason.
>
> If 404.html is supposed to be in reference to the HTTP return code for
> "page not found", then there does seem to be a problem with this
> (unless there's some machinery elsewhere that I haven't seen).
I'm pretty sure this was just supposed to be an illustrative example...
> Returning a page called 404.html (presumably with an HTTP return code
> 200 = OK) is a weak apology for sending a real HTTP 404 return code,
> to tell every client (browser, indexing bot or whatever) that the page
> really doesn't exist.
Especially since putting this:
ErrorDocument 404 /some/appropriate/path/404.html
in a .htaccess file or server config file will do just what is wanted.
DS
------------------------------
Date: Mon, 24 Jul 2006 21:24:56 +0200
From: Franzl Wisseworst <franzl.wisseworst@mailinator.net>
Subject: Re: Idiot Q: How to find index number of HASH match?
Message-Id: <ea37lq$icd$02$1@news.t-online.com>
David Squire wrote:
[..]
> I'm pretty sure this was just supposed to be an illustrative example...
Yes a somewhat misleading example, in fact, it is meant to be a mirror when
a page does not exist in the other language, with a notice such as:
print "This page does currently not yet exist in $opposite_language";
while it is presumably under construction/translation.
------------------------------
Date: Mon, 24 Jul 2006 21:04:33 GMT
From: "Mumia W." <mumia.w.18.spam+nospam.usenet@earthlink.net>
Subject: Re: Idiot Q: How to find index number of HASH match?
Message-Id: <BBaxg.4346$157.320@newsread3.news.pas.earthlink.net>
On 07/24/2006 12:55 PM, Franzl Wisseworst wrote:
> [...]
> It is no problem to get around it as follows: ...
>
> if ($match_index eq ""){
> print "404.html";
> }
> else {
> print $string;
> }
>
> .... but I don't think that was the general idea. Perhaps it's something in
> the line:
> my $string = defined $match_index ? $match_index : "404.html";
>
> Or maybe I'm handling what's returned in a wrong way? In any case, the
> right result is there in a roundabout way.
The documentation on my system doesn't say what
Tie::Hash->Indices() returns on failure, so I assumed it
returned undef.
The line I wrote above says "if $match_index is defined,
return $match_index, otherwise return '404.html'". Now I want
it to say, "if $match_index is not the empty string, return
$match_index, otherwise return '404.html'".
my $string = $match_index ne '' ? $match_index : '404.html';
Look at "perldoc perlop" § _Conditional Operator_ if the "?
... : ..." syntax confuses you.
HTH
------------------------------
Date: 24 Jul 2006 17:19:16 -0700
From: "lloydie" <lloyde@dodo.com.au>
Subject: Re: method connecting outlook express to webmail script
Message-Id: <1153786756.616277.284160@p79g2000cwp.googlegroups.com>
A. Sinan Unur wrote:
I dont want to setup a pop3 or smtp server.
The webmail script connects with mail servers for different email
addresses and then downloads all the files from each one to be stored
on the http server....from there they can log in with username and
password to read their mail....ie Webmail
They have the option of deleting all messages downloaded or leaving
them on their server for someone else to download and delete at a later
date.
What I am requiring is the ability for Outlook Express to be able to
login to the cgi via http protocol and download all messages.
Thanks in advance.
Lloyd Etheridge
------------------------------
Date: Mon, 24 Jul 2006 12:20:29 GMT
From: Dominique Dumont <domi@komarr.grenoble.hp.com>
Subject: New release of Config-Model
Message-Id: <J2x6Fp.1qHn@zorch.sf-bay.org>
Hello
I'm happy to announce the new release of the Config::Model [1] perl
module (v0.601) .
This version features the first version of a program to edit
configuration data (provided the data model exists in
/etc/config-model.d). This "config-model" program provides a
shell like interface with auto-completion.
Note that writing back configuration data is still shaky. So
don't run this command as root.
Other changes:
* Model.pm (load): new method. Model can load model
declaration from /etc/config-model.d. The model must be
valid perl script that ends with an array ref containing
configuraiton class declaration like the one accepted by
create_config_class.
* Modified example/fstab/Fstab.pl file so that fstab model
can be loaded by Model.pm
* Describe.pm: New file. Provides a human readable
description of a configuration node.
You can download this package from CPAN [2] or sourceforge [3].
Cheers
[1] http://config-model.sourceforge.net/
[2] http://search.cpan.org/dist/Config-Model/
[3] https://sourceforge.net/project/sho...group_id=155650
--
Dominique Dumont
"Delivering successful solutions requires giving people what they
need, not what they want." Kurt Bittner
------------------------------
Date: Mon, 24 Jul 2006 16:47:31 -0400
From: Ted Zlatanov <tzz@lifelogs.com>
Subject: Re: numeric sort on string like a123-3
Message-Id: <g693bcqraqk.fsf@CN1374059D0130.kendall.corp.akamai.com>
On 22 Jul 2006, filippo2991@virgilio.it wrote:
> I forgot to mention that I have also strings
> bungalow 1
> bungalow2
> a12-1
> a12
Write a function that, given any string in your list, will produce a
floating-point number representing its sort position. Then sort based
on that function based on the abundant examples you've been given.
Consider this a learning experience. Always specify your problem
carefully, before you try to solve it, especially when you ask others
to help you. That's a big difference between adequate and good
programmers: the good programmer knows where he's going, not just how
to get places. Good luck.
Ted
------------------------------
Date: Mon, 24 Jul 2006 22:35:29 +0200
From: "Peter J. Holzer" <hjp-usenet2@hjp.at>
Subject: Re: Perl not deleting file content if file on server
Message-Id: <pan.2006.07.24.20.35.29.604031@hjp.at>
On Mon, 24 Jul 2006 08:12:18 -0700, Paul Lalli wrote:
> Markus Hänchen wrote:
>> using
>> open RESULTS, ">results.txt";
>> does not delete the contents of the file if the file sits on a server.
>
> This is non sensical. The fact that the machine the file resides on
> happens to also be running one or more server programs has no causal
> relationship to opening a file.
Markus' description makes it likely that by "sits on a server" he meant
"is on a filesystem accessed via some network filesystem protocol,
probably SMB". In this case, the difference between a local filesystem
and a remote filesystem can cause quite different behaviour. In fact I
have seen exactly this behaviour several years ago on an EMC² NAS
device. The SMB protocol has several methods for opening a file (in
fact, it has several methods for just about everything - whoever's
responsible for it must be a great fan of TMTOWTDI), and one of them
wasn't correctly implemented - the equivalent of the O_TRUNC flag was
ignored. EMC² fixed the bug, of course.
hp
--
_ | Peter J. Holzer | > Wieso sollte man etwas erfinden was nicht
|_|_) | Sysadmin WSR | > ist?
| | | hjp@hjp.at | Was sonst wäre der Sinn des Erfindens?
__/ | http://www.hjp.at/ | -- P. Einstein u. V. Gringmuth in desd
------------------------------
Date: Mon, 24 Jul 2006 23:32:49 +0100
From: fergus@twig.demon.co.uk (Fergus McMenemie)
Subject: Re: problems using oddmuse with mod_perl2 inside apache2.2 perl 5.8.6
Message-Id: <1hiv8gb.1ugbqmjkryi80N%fergus@twig.demon.co.uk>
Brian Wakem <no@email.com> wrote:
> > HI,
> >
> > mod_perl newby! Running oddmuse as a cgi works fine. However inside
> > mod_perl I only get a blank screen. No error messages of any kind
> > in any of the apache log files. Other basic mod_perl scripts work fine.
>
>
> The second to last line in the source, which calls the sub that gets
> everything going is:
>
> DoWikiRequest() if $RunCGI and not exists $ENV{MOD_PERL}; # Do everything.
>
> So if running under mod_perl nothing will happen at all, which is what you
> are (not) seeing.
Hmmm.. Yes. That does seem clear. Yet the rest of the code contains
comments related to use of mod_perl. Is mod_perl support a work in
progress or something?
It is a pity the documenation does not address this or that the code
does not fail more gracefully.
------------------------------
Date: Mon, 24 Jul 2006 23:16:34 +0200
From: Holger <spam.trap.never.read@mailinator.com>
Subject: Questions about (non-blocking) sockets
Message-Id: <44c51dd5.32640517@news.arcor.de>
Hi,
After having read quite a bit of postings on the topic it's still not
entirely clear to me.
I have working code that is a forever running client and which opens
just one connection (with blocking reads) to a server. Generally, it's
kind of a ping pong protocol, but the server also arbitrarily sends
data. I suppose that therefore I haven't run into a deadlock problem
yet of not sending often enough data that cause a response in return.
Here's the code frame:
#!/usr/bin/perl -w
use strict;
use IO::Socket;
use IO::Select;
# init snipped ...
$SIG{__DIE__} = \&SigDieHandler;
sub SigDieHandler
{
$socket->close if ( defined $socket );
$SIG{__DIE__} = 'DEFAULT';
exit( 0 );
}
my $socket = IO::Socket::INET->new( PeerAddr => $RemoteHost,
PeerPort => $RemotePort,
Proto => 'tcp',
Type => SOCK_STREAM )
or die "Could not connect to $RemoteHost:$RemotePort: $@\n";
my $data;
while ( defined $socket->recv( $data, 1028 ) ) {
# while processing $data ... {
print $socket $otherdatatosend;
# error handling snipped ...
# }
}
__END__
I've read to not use recv or sysread together with print on the same
socket. Does this apply to the entire socket or only per direction?
After all, the above works.
I'd like to convert the code into non-blocking call(s), but am a
little confused about the exact details, since I've only found
examples for the server side with listening sockets. Perhaps, I don't
see the wood for all the trees. I merely have a single connection, not
an entire pool.
So far I've come up with the following (btw, needs to work on win32,
too). But before changing the program I wanted to ask whether I'm on
the right track.
my $socket = IO::Socket::INET->new( PeerAddr => $RemoteHost,
PeerPort => $RemotePort )
or die "Could not connect to $RemoteHost:$RemotePort: $@\n";
my $select = IO::Select->new( $socket );
while ( 1 ) {
if ( $select->can_read( $timeout ) ) {
unless ( defined $socket->recv( $data, 1028 ) ) {
break;
}
else {
# process received $data
}
}
# do stuff, send data
}
$select->remove( $socket );
close $socket;
__END__
I also have a few questions:
What exact effects do values undef, 0, and e.g. 5 for $timeout have?
$select->can_read returns in this case either a list with one entry or
an empty list (on timeout). Correct?
Should I use sysread instead of recv?
Is the $select->remove necessary for cleanup?
Any thoughts on having the cleanup code in the die handler or not?
Best regards,
Holger
------------------------------
Date: 24 Jul 2006 23:06:33 GMT
From: xhoster@gmail.com
Subject: Re: Questions about (non-blocking) sockets
Message-Id: <20060724191251.717$7u@newsreader.com>
Holger <spam.trap.never.read@mailinator.com> wrote:
> Hi,
>
> After having read quite a bit of postings on the topic it's still not
> entirely clear to me.
>
> I have working code that is a forever running client and which opens
> just one connection (with blocking reads) to a server. Generally, it's
> kind of a ping pong protocol,
What does that mean? One query yields exactly one response?
> but the server also arbitrarily sends
> data. I suppose that therefore I haven't run into a deadlock problem
> yet of not sending often enough data that cause a response in return.
With what is shown, it is hard to say whether you are just lucky so far
or if your code is really not susceptible to deadlocks. I'd have to see
the code on the other end too, and know how you are aligning messages.
>
> my $socket = IO::Socket::INET->new( PeerAddr => $RemoteHost,
> PeerPort => $RemotePort,
> Proto => 'tcp',
> Type => SOCK_STREAM )
> or die "Could not connect to $RemoteHost:$RemotePort: $@\n";
> my $data;
> while ( defined $socket->recv( $data, 1028 ) ) {
This seems a little unusual. Usually the client initiates a connection,
and then initiates the query on that connection. Here, this process
initiates the connection, but then waits for other side to initiate
the query. I don't know if that makes this process the client or the
server.
Also, does the other end always send records of size exactly 1028?
> # while processing $data ... {
> print $socket $otherdatatosend;
> # error handling snipped ...
> # }
> }
> __END__
>
> I've read to not use recv or sysread together with print on the same
> socket. Does this apply to the entire socket or only per direction?
> After all, the above works.
I don't think that mixing them on different legs of the same socket will
cause problems.
> I'd like to convert the code into non-blocking call(s), but am a
> little confused about the exact details, since I've only found
> examples for the server side with listening sockets. Perhaps, I don't
> see the wood for all the trees.
Why do you want to do it non-blocking? I can answer some of your technical
questions without knowing the reason, but knowing why would help us help
you see the forest for the trees.
> I merely have a single connection, not
> an entire pool.
>
> So far I've come up with the following (btw, needs to work on win32,
> too). But before changing the program I wanted to ask whether I'm on
> the right track.
>
> my $socket = IO::Socket::INET->new( PeerAddr => $RemoteHost,
> PeerPort => $RemotePort )
> or die "Could not connect to $RemoteHost:$RemotePort: $@\n";
> my $select = IO::Select->new( $socket );
> while ( 1 ) {
> if ( $select->can_read( $timeout ) ) {
> unless ( defined $socket->recv( $data, 1028 ) ) {
> break;
> }
> else {
> # process received $data
> }
> }
> # do stuff, send data
You might want the "send data" to be inside the else. Do you really need
to send data to the other every $timeout seconds, even if the other side
hasn't yet responded to your previous queries?
> }
> $select->remove( $socket );
> close $socket;
> __END__
>
> I also have a few questions:
> What exact effects do values undef, 0, and e.g. 5 for $timeout have?
Undef means wait forever for the handle to become readable. 0 means wait
for zero seconds. 5 means to wait for 5 seconds.
> $select->can_read returns in this case either a list with one entry or
> an empty list (on timeout). Correct?
Yes.
> Should I use sysread instead of recv?
The tradition I've seen is to recv only for UDP. So I would say yes, use
sysread. I don't know if there is a basis beyond tradition for this.
>
> Is the $select->remove necessary for cleanup?
Not as is, because the program immediately terminates anyway. If the
program went on to use $select later, then you should remove the dead
handle.
>
> Any thoughts on having the cleanup code in the die handler or not?
I don't see any point in it.
Xho
--
-------------------- http://NewsReader.Com/ --------------------
Usenet Newsgroup Service $9.95/Month 30GB
------------------------------
Date: Mon, 24 Jul 2006 20:25:20 -0400
From: Uri Guttman <uri@stemsystems.com>
Subject: Re: Questions about (non-blocking) sockets
Message-Id: <x78xmiil8v.fsf@mail.sysarch.com>
>>>>> "x" == xhoster <xhoster@gmail.com> writes:
>> Type => SOCK_STREAM )
>> or die "Could not connect to $RemoteHost:$RemotePort: $@\n";
>> my $data;
>> while ( defined $socket->recv( $data, 1028 ) ) {
x> This seems a little unusual. Usually the client initiates a connection,
x> and then initiates the query on that connection. Here, this process
x> initiates the connection, but then waits for other side to initiate
x> the query. I don't know if that makes this process the client or the
x> server.
i try to teach this point to all when discussing sockets. only the
connection is required to be oriented from client to running (listening)
server. tcp is bidirectional after that. you can then run client/server
in either direction or peer to peer or whatever you want. there is no
association between the connection direction and the data's. now, most
client connections are also client requestors (http being the classic
now). but i do peer to peer with stem and only worry about the
connection direction as needed.
>> I've read to not use recv or sysread together with print on the same
>> socket. Does this apply to the entire socket or only per direction?
>> After all, the above works.
you can do whatever you want as long as you understand the issuse
involved. the problem is they are subtle and tricky so obeying those
rules is good in general. and you can use buffered i/o in one direction
unbuffered in the other since they are independent. you just have to
make sure each side (for a given direction) knows how the other side
will transmit/receive data. this is why i always use sysread/write for
all my socket code as i want the control and not to have to worry about
some strange buffering done by print and stdio.
uri
--
Uri Guttman ------ uri@stemsystems.com -------- http://www.stemsystems.com
--Perl Consulting, Stem Development, Systems Architecture, Design and Coding-
Search or Offer Perl Jobs ---------------------------- http://jobs.perl.org
------------------------------
Date: Mon, 24 Jul 2006 18:54:56 +0100
From: Ben Morrow <benmorrow@tiscali.co.uk>
Subject: Re: Semantics of threads
Message-Id: <g4efp3-u9j.ln1@osiris.mauzo.dyndns.org>
Quoth Bo Lindbergh <blgl@stacken.kth.se>:
> perldoc perlthrtut says:
> > Thinking of mixing fork() and threads? Please lie down and wait until
> > the feeling passes. Be aware that the semantics of fork() vary between
> > platforms. For example, some UNIX systems copy all the current threads
> > into the child process, while others only copy the thread that called
> > fork(). You have been warned!
>
> Does this mean that if more than one thread exists, the qx operator,
> the system function, and the open function in pipe mode all have
> undefined behaviour?
No. A Unix system destroys all threads but the main one when exec(2) is
called; on Windows qx/system/open '|-' use the win32 spawn (or maybe
CreateProcess? It comes to the same thing) function anyway.
Ben
--
Musica Dei donum optimi, trahit homines, trahit deos. |
Musica truces mollit animos, tristesque mentes erigit.|benmorrow@tiscali.co.uk
Musica vel ipsas arbores et horridas movet feras. |
------------------------------
Date: 24 Jul 2006 18:28:21 GMT
From: xhoster@gmail.com
Subject: Re: Semantics of threads
Message-Id: <20060724143437.507$9O@newsreader.com>
Bo Lindbergh <blgl@stacken.kth.se> wrote:
> perldoc perlthrtut says:
> > Thinking of mixing fork() and threads? Please lie down and wait until
> > the feeling passes. Be aware that the semantics of fork() vary between
> > platforms. For example, some UNIX systems copy all the current threads
> > into the child process, while others only copy the thread that called
> > fork(). You have been warned!
>
> Does this mean that if more than one thread exists, the qx operator,
> the system function, and the open function in pipe mode all have
> undefined behaviour?
Excluding bugs, no, the behaviour is not undefined. Those operations are
not implemented merely as naive forks. They are implemented in different
ways on different machines, and (attempt to) take care of such issues.
Xho
--
-------------------- http://NewsReader.Com/ --------------------
Usenet Newsgroup Service $9.95/Month 30GB
------------------------------
Date: 24 Jul 2006 16:06:43 -0700
From: "Vinay" <shah.vinay@gmail.com>
Subject: Use MSXML in perl without registration
Message-Id: <1153782403.410656.21810@75g2000cwc.googlegroups.com>
I would like to use MSXML4.0 in my perl script, but not have it
register on my machine. The way to do that is explained for C++ at this
link:
http://www.perfectxml.com/articles/msxml/TipsAugust02.asp
I am finding it difficult to port it over to perl. Anyone has any clue
for the same? What steps do I need to take?
Thanks for your time.
Vinay
------------------------------
Date: 6 Apr 2001 21:33:47 GMT (Last modified)
From: Perl-Users-Request@ruby.oce.orst.edu (Perl-Users-Digest Admin)
Subject: Digest Administrivia (Last modified: 6 Apr 01)
Message-Id: <null>
Administrivia:
#The Perl-Users Digest is a retransmission of the USENET newsgroup
#comp.lang.perl.misc. For subscription or unsubscription requests, send
#the single line:
#
# subscribe perl-users
#or:
# unsubscribe perl-users
#
#to almanac@ruby.oce.orst.edu.
NOTE: due to the current flood of worm email banging on ruby, the smtp
server on ruby has been shut off until further notice.
To submit articles to comp.lang.perl.announce, send your article to
clpa@perl.com.
#To request back copies (available for a week or so), send your request
#to almanac@ruby.oce.orst.edu with the command "send perl-users x.y",
#where x is the volume number and y is the issue number.
#For other requests pertaining to the digest, send mail to
#perl-users-request@ruby.oce.orst.edu. Do not waste your time or mine
#sending perl questions to the -request address, I don't have time to
#answer them even if I did know the answer.
------------------------------
End of Perl-Users Digest V10 Issue 9519
***************************************