[31856] in Perl-Users-Digest
Perl-Users Digest, Issue: 3119 Volume: 11
daemon@ATHENA.MIT.EDU (Perl-Users Digest)
Mon Sep 6 11:09:27 2010
Date: Mon, 6 Sep 2010 08:09:11 -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, 6 Sep 2010 Volume: 11 Number: 3119
Today's topics:
Re: Accessing and printing LoL fields in a loop? <tuxedo@mailinator.com>
Re: Accessing and printing LoL fields in a loop? <sherm.pendley@gmail.com>
Re: Accessing and printing LoL fields in a loop? <tuxedo@mailinator.com>
Re: Accessing and printing LoL fields in a loop? <tuxedo@mailinator.com>
Re: Ideal data structure for nested list format? <tuxedo@mailinator.com>
Re: Ideal data structure for nested list format? <tuxedo@mailinator.com>
Re: Multidimensional array <mvdwege@mail.com>
Re: Multidimensional array <ben@morrow.me.uk>
POSIX and Math::Trig <cheney@halliburton.com>
Re: POSIX and Math::Trig <peter@makholm.net>
Re: POSIX and Math::Trig <ben@morrow.me.uk>
Re: POSIX and Math::Trig <cheney@halliburton.com>
Re: POSIX and Math::Trig <bugbear@trim_papermule.co.uk_trim>
Re: POSIX and Math::Trig <jurgenex@hotmail.com>
Re: POSIX and Math::Trig <cheney@halliburton.com>
Re: POSIX and Math::Trig <bugbear@trim_papermule.co.uk_trim>
Re: POSIX and Math::Trig <cheney@halliburton.com>
Re: POSIX and Math::Trig <sherm.pendley@gmail.com>
Digest Administrivia (Last modified: 6 Apr 01) (Perl-Users-Digest Admin)
----------------------------------------------------------------------
Date: Mon, 6 Sep 2010 16:26:27 +0200
From: Tuxedo <tuxedo@mailinator.com>
Subject: Re: Accessing and printing LoL fields in a loop?
Message-Id: <i62tmj$q1l$02$1@news.t-online.com>
Uri Guttman wrote:
[...]
> have you read perldoc perllol? it directly answers your question.
I indeed have, understood everything within, unfortunately not. As such, I
can't say there are direct answers to my questions in the documentation, at
least not ones intended for readers at my current level of perl knowledge.
Tuxedo
------------------------------
Date: Mon, 06 Sep 2010 10:42:08 -0400
From: Sherm Pendley <sherm.pendley@gmail.com>
Subject: Re: Accessing and printing LoL fields in a loop?
Message-Id: <m2eid7q6gv.fsf@sherm.shermpendley.com>
Tuxedo <tuxedo@mailinator.com> writes:
> Uri Guttman wrote:
>
> [...]
>
>> have you read perldoc perllol? it directly answers your question.
>
> I indeed have, understood everything within, unfortunately not. As such, I
> can't say there are direct answers to my questions in the documentation, at
> least not ones intended for readers at my current level of perl knowledge.
You might also want to have a look at the 'perlreftut' and 'perldsc'
docs, then.
sherm--
--
Sherm Pendley
<http://camelbones.sourceforge.net>
Cocoa Developer
------------------------------
Date: Mon, 6 Sep 2010 16:49:43 +0200
From: Tuxedo <tuxedo@mailinator.com>
Subject: Re: Accessing and printing LoL fields in a loop?
Message-Id: <i62v27$t6o$02$1@news.t-online.com>
Jürgen Exner wrote:
> Tuxedo <tuxedo@mailinator.com> wrote:
> >Given this data structure:
> >
> >my @lol = ('level 1.1',
> > ['level 2.1',
> > 'level 2.2',
> > ['level 3.1',
> > 'level 3.2'],
> > 'level 2.3']);
> >
> >How can I print the LoL with a loop,
>
> You cannot. At least not withouth building your own data stack to
> simulate recursion. Which can be done but why would you want to?
>
> > in the same basic structure, as follows:
> >
> ><ul><li>level 1.1
> > <ul><li>level 2.1</li>
> > <li>level 2.2
> > <ul><li>level 3.1</li>
> > <li>level 3.2</li>
> > </ul>
> > </li>
> > <li>level 2.3</li>
> > </ul>
> > </li>
> ></ul>
>
> Recursion is your friend:
> (untested, algorithmic sketch only):
>
> sub print_list {
> print_list_begin();
> for my $elem (@_){
> if (ref($elem) { # we got a sublist to process
> print_list @{$elem};
> } else { # we got a single element
> print_item($elem};
> }
> }
> print_list_end()
> }
>
> >And how can I access/print separate level records, such as all in the
> >first level of the LoL, the second level or the third? Again by a loop.
>
> Again, you cannot unless you implement recursion yourself.
>
> However if you don't insist on that loop then just pass an additional
> parameter "$level" to print_list() which you decrement for each
> recursive call and the actual print()s are only executed if $level ==0;
>
> sub print_list {
> my $level = shift;
> print_list_begin() if $level ==0;;
> for my $elem (@_){
> if (ref($elem) { # we got a sublist to process
> print_list ($level -1, @{$elem});
> } else { # we got a single element
> print_item($elem} if $level ==0;;
> }
> }
> print_list_end() if $level ==0;
> }
>
>
> >I guess a simple way to do this exists?
>
> No. Implementing general recursive algorightm using loops is rather
> difficult except in the case of tail recursion which is trivial but
> doesn't apply here.
> For general recursion you need to maintain some sort of data or
> call-back stack manually, otherwise the loop would not know how to
> proceed after returning from processing a sub list.
>
> jue
Thanks for answering and posting the above code examples. I can't say I
fully understand the syntax (yet). How is parameter $level passed to
print_list() for example? Would this be done with a regular LoL or
something slightly different? Can you or anyone kindly post the code within
an actual working script using example data like in the above LoL?
Thanks again,
Tuxedo
------------------------------
Date: Mon, 6 Sep 2010 16:52:16 +0200
From: Tuxedo <tuxedo@mailinator.com>
Subject: Re: Accessing and printing LoL fields in a loop?
Message-Id: <i62v70$t6o$02$2@news.t-online.com>
Sherm Pendley wrote:
[...]
> You might also want to have a look at the 'perlreftut' and 'perldsc'
> docs, then.
I did, and I'm still doing :-) ...
Tuxedo
------------------------------
Date: Mon, 6 Sep 2010 09:11:38 +0200
From: Tuxedo <tuxedo@mailinator.com>
Subject: Re: Ideal data structure for nested list format?
Message-Id: <i6247b$1oo$00$1@news.t-online.com>
Ben Morrow wrote:
>
> Quoth Tuxedo <tuxedo@mailinator.com>:
> > Uri Guttman wrote:
> >
> > > >>>>> "T" == Tuxedo <tuxedo@mailinator.com> writes:
[...]
> > I installed Template::Simple as stand-alone module, after installing
> > File::Slurp and setting a use lib 'external_modules/lib/perl5/site_perl'
> > call in the Makefile.PL script within the Template-Simple-0.02
> > directory.
>
> Why did you do that? You shouldn't be editing the Makefile.PL at all.
> Put external_module/.../site_perl in PERL5LIB in the environment,
> instead.
Is PERL5LIB meant to be a temporary Unix environment variable at time of
installation, pointing to /some/external_module/.../site_perl? Eg.:
PERL5LIB=/path/to/module_dir/
Does Makefile.PL probe for that during module installation, to find any
relevant dependency modules that may not otherwise exist in Perl's standard
library locations? Or do you mean something else regarding PERL5LIB?
[...]
> If you haven't run the tests you have no reason for thinking that.
I'm not sure what you mean, I ran 'make test' and there were many errors.
[...]
> my $T = Template::Simple->new;
> my $ref = $T->render(<<T, { world => "I'm a template" });
> Hello, [% world %]!
> T
> print $$ref;
Thanks for this bit of code, I'm sure it works :-)
[...]
> Using T::S you would need to go through and insert class => "..."
> entries in your main data structure. There isn't any way to use a
> subsidiary hash the way I was suggesting. (This is one of the things I
> find slightly irritating about T::S, though I've yet to find a better
> alternative for basic (i.e., 'don't want TT2') stuff.)
Thanks for this advise as well. It sounds highly complex to make T::S do
what I'd like for this particular, yet simple, nested list structure.
Tuxedo
------------------------------
Date: Mon, 6 Sep 2010 15:46:41 +0200
From: Tuxedo <tuxedo@mailinator.com>
Subject: Re: Ideal data structure for nested list format?
Message-Id: <i62rc1$fqc$00$1@news.t-online.com>
Peter J. Holzer wrote:
> > T> Ben Morrow wrote:
[...]
> > T> #!/usr/bin/perl -w
> >
> > T> use warnings;
> > T> use strict;
> >
> > T> my @pages = (
> > T> { page => "1.1.html", title => "Level 1.1", children => [
> > T> { page => "2.1.html", title => "Level 2.1" },
> > T> { page => "2.2.html", title => "Level 2.2", children =>
> > [
> > T> { page => "3.1.html", title => "Level 3.1" },
> > T> { page => "3.2.html", title => "Level 3.2" },
> > T> ] },
> > T> { page => "2.3.html", title => "Level 2.3" },
> > T> ] },
> > T> );
> >
> >Uri Guttman <uri@StemSystems.com> wrote:
> > gack!! use a templater.
>
> With a templater you still need to represent the data you want to render
> with the templater. I don't see how you could represent a tree, where
> each node contains a link to a page and a title, much differently in
> perl than Ben showed above (I am assuming that "page" and "title" aren't
> as redundant as the seem to be in the example. Instead of "Level 1.1"
> the title would probably be something like "1.1 - Introduction" in the
> real world).
I think you understand well. The actual content on 1.1.html may indeed be
an introduction to sub-branches that grow directly off the main information
trunk so to speak, i.e. 2.1, 2.2 and 2.3, while 2.2.html is an introduction
node to what exists on the next level, i.e. 3.1 and 3.2. In a real
situation, an <li> node is just an overview of what exists directly one
level deeper within it's own <li></li> scope. Yet, nodes are actual html
pages, like any other pages, only the content is different. As you say, the
intermediate or the first <li> may appear redundant in my example. The
structure may be a bit better described as:
+ Overall topic (node)
* Some topic
+ Sub-topic (node)
* Some topic ZZz
* Some topic Xxx
* Some other topic
As long as the actual information contained in the various pages is well
arranged by topics and sub-topics, this structure can work just fine for
whatever purpose it serves. For example, some people may click on a node
for an intro, overview or table-of-contents or whatever happens to be
suitably kept in such a place, while others may go directly to a sub-topic
page. I guess this is not an entirely unusual format used in navigation
systems with typical HTML/CSS menus. These can be styled in different ways,
such as clicking on a topic to reveal sub-topics, or by tree-expansion
on-mouseover or other special effects. This is all done with help of CSS
and that requires the right list structure to begin with. Almost all such
navigation systems on the web are built on simple unordered html list.
> > many to choose from. check out mine called Template::Simple. you pass
> > it a data structure
>
> Yup. But you have to have the data structure first. That's what you
> quoted above.
I had also thought an LoL could be combined with another LoL holding the
titles, but maybe this is somewhat limiting in design:
my @lol = ('1.1.html',
['2.1.html',
'2.2.html',
['3.1.html',
'3.2,html'],
'2.3']);
Template driven or not, in case someone has written a template or module
that can output the exact type of listing format needed, it will surely do
fine too. The code may however best be written from scratch. After all, the
actual final tree format is not an irregular structure of some kind.
How Ben wrote it looks fine to me and is certainly easy to maintain
whenever changes are needed. I just couldn't run his code without errors
and I can't see through the entire perl syntax unfortunately... But if you
say it can't be done differently in perl, then that must also be the right
way to go! What type of Perl data structure is it btw.? An AoH?
Tuxedo
------------------------------
Date: Mon, 06 Sep 2010 06:20:32 +0200
From: Mart van de Wege <mvdwege@mail.com>
Subject: Re: Multidimensional array
Message-Id: <864oe3tsdr.fsf@gareth.avalon.lan>
"Paul E. Schoen" <paul@pstech-inc.com> writes:
<snip>
> my $dbfile = "../SCGBG/events.db"; #for Dreamhost
> #my $dbfile="/home/jail.root/home/pstech/www/SCGBG/events.db"; #for
> SmartNet
>
> print fErrors "Connecting to $dbfile\n";
>
> my $db = DBI->connect( # connect to your database, create if
> needed
> "dbi:SQLite:dbname=$dbfile", # DSN: dbi, driver, database file
> "", # no user
> "", # no password
> { RaiseError => 1, AutoCommit => 1 } # complain if something goes wrong
> ) or die $DBI::errstr;
>
> #newly created file has size zero
> if ((-e $dbfile) and not (-s $dbfile)) { #check for zero size
> print fErrors "Creating table\n";
> $db->do("CREATE TABLE tEvents (dt DATETIME KEY, tl TEXT, de TEXT)");
> }
As Ben pointed out, you still have a race.
Think on what you are testing for. You want to know if the file is new,
in which case you need to create a table, right? Now, what happens if
you create a table in an existing SQLite db file?
The easy solution is to *not* test for file existence or size, but to
wrap the create statement in an eval{} block (Nota bene: an eval BLOCK!
see perldoc -f eval), and then test the error code after the block. If
that is the SQLite error for 'table already exists', then continue,
otherwise die using the original errorstring.
This, BTW, is a common error in DB programming, and not Perl specific. I
see it all the time when people want to know if a row exists before
inserting, they do a 'SELECT' beforehand. Unnecessary; just INSERT and
catch the error.
Mart
--
"We will need a longer wall when the revolution comes."
--- AJS, quoting an uncertain source.
------------------------------
Date: Mon, 6 Sep 2010 11:27:08 +0100
From: Ben Morrow <ben@morrow.me.uk>
Subject: Re: Multidimensional array
Message-Id: <s8sel7-rm91.ln1@osiris.mauzo.dyndns.org>
Quoth "Paul E. Schoen" <paul@pstech-inc.com>:
>
> Would it be possible (and advisable) to make my own Perl module with code
> that is proven to work on the server but not locally, such as the emailing
> procedure from open(MAIL... to close(MAIL)? Perhaps make it a subroutine and
> optionally call it from my main script? That way I could have a full
> featured sendmail function in the modules I include on the servers, and a
> dummy function in the one for testing on the local machine?
No, just use Email::Sender::Simple.
Ben
------------------------------
Date: Mon, 6 Sep 2010 11:15:57 +0000 (UTC)
From: Andre Majorel <cheney@halliburton.com>
Subject: POSIX and Math::Trig
Message-Id: <slrni89jbd.6fd.cheney@atc5.vermine.org>
Is there a simple way to use both POSIX and Math::Trig without
getting a flurry of warnings ?
Subroutine main::atan redefined at myscript line 24
Subroutine main::asin redefined at myscript line 24
Subroutine main::tanh redefined at myscript line 24
Subroutine main::cosh redefined at myscript line 24
Subroutine main::tan redefined at myscript line 24
Subroutine main::acos redefined at myscript line 24
Subroutine main::sinh redefined at myscript line 24
Thanks in advance.
--
André Majorel http://www.teaser.fr/~amajorel/
"This album is very well mixed, so it is difficult to tell
what is what."
------------------------------
Date: Mon, 06 Sep 2010 13:24:53 +0200
From: Peter Makholm <peter@makholm.net>
Subject: Re: POSIX and Math::Trig
Message-Id: <87wrqz867u.fsf@vps1.hacking.dk>
Andre Majorel <cheney@halliburton.com> writes:
> Is there a simple way to use both POSIX and Math::Trig without
> getting a flurry of warnings ?
If both modules are well-behaved you should be able to just import the
sumbols you need from each module. That is doing something like:
use POSIX qw(chmod chown);
use Math::Trig qw(tan cos sin);
If you need to handle file ownershipå and permissions and use the
basic triogometric functions from Math::Trig
//Makholm
------------------------------
Date: Mon, 6 Sep 2010 12:26:11 +0100
From: Ben Morrow <ben@morrow.me.uk>
Subject: Re: POSIX and Math::Trig
Message-Id: <jnvel7-a2f1.ln1@osiris.mauzo.dyndns.org>
Quoth Andre Majorel <cheney@halliburton.com>:
> Is there a simple way to use both POSIX and Math::Trig without
> getting a flurry of warnings ?
>
> Subroutine main::atan redefined at myscript line 24
Just import the subs you want from POSIX, rather than all of them
(assuming the Math::Trig version is the version you want).
Ben
------------------------------
Date: Mon, 6 Sep 2010 11:52:54 +0000 (UTC)
From: Andre Majorel <cheney@halliburton.com>
Subject: Re: POSIX and Math::Trig
Message-Id: <slrni89lgm.6fd.cheney@atc5.vermine.org>
On 2010-09-06, Ben Morrow <ben@morrow.me.uk> wrote:
>
> Quoth Andre Majorel <cheney@halliburton.com>:
>> Is there a simple way to use both POSIX and Math::Trig without
>> getting a flurry of warnings ?
>>
>> Subroutine main::atan redefined at myscript line 24
>
> Just import the subs you want from POSIX, rather than all of them
> (assuming the Math::Trig version is the version you want).
Thanks folks. My script evals its arguments so which subs are
needed is not known at write time.
I was hoping there was a way of saying "use X and quietly
redefine whatever you want", or "use X but don't redefine
anything". Or, at worst, "use X and import everything except
this and that".
--
André Majorel http://www.teaser.fr/~amajorel/
"This album is very well mixed, so it is difficult to tell
what is what."
------------------------------
Date: Mon, 06 Sep 2010 13:14:18 +0100
From: bugbear <bugbear@trim_papermule.co.uk_trim>
Subject: Re: POSIX and Math::Trig
Message-Id: <ldudnZdJMN2HRhnRnZ2dnUVZ8vudnZ2d@brightview.co.uk>
Andre Majorel wrote:
> On 2010-09-06, Ben Morrow <ben@morrow.me.uk> wrote:
>> Quoth Andre Majorel <cheney@halliburton.com>:
>>> Is there a simple way to use both POSIX and Math::Trig without
>>> getting a flurry of warnings ?
>>>
>>> Subroutine main::atan redefined at myscript line 24
>> Just import the subs you want from POSIX, rather than all of them
>> (assuming the Math::Trig version is the version you want).
>
> Thanks folks. My script evals its arguments so which subs are
> needed is not known at write time.
>
> I was hoping there was a way of saying "use X and quietly
> redefine whatever you want", or "use X but don't redefine
> anything". Or, at worst, "use X and import everything except
> this and that".
>
I think your purpose can be served by simply
doing the "uses" you want, in the order you prefer.
and turning the warnings off during this, via
use/no warnings.
BugBear
------------------------------
Date: Mon, 06 Sep 2010 05:18:06 -0700
From: Jürgen Exner <jurgenex@hotmail.com>
Subject: Re: POSIX and Math::Trig
Message-Id: <dnm986ldiijn6j87fg1eoddull8j9c5us6@4ax.com>
Andre Majorel <cheney@halliburton.com> wrote:
>On 2010-09-06, Ben Morrow <ben@morrow.me.uk> wrote:
>>
>> Quoth Andre Majorel <cheney@halliburton.com>:
>>> Is there a simple way to use both POSIX and Math::Trig without
>>> getting a flurry of warnings ?
>>>
>>> Subroutine main::atan redefined at myscript line 24
>>
>> Just import the subs you want from POSIX, rather than all of them
>> (assuming the Math::Trig version is the version you want).
>
>Thanks folks. My script evals its arguments so which subs are
>needed is not known at write time.
But you should know at development time _which_ version of e.g. cosh,
tanh, or tan you want to use when needed, the one from POSIX or the one
from Math::Trig. So import only the one you would use when needed.
Or are you switching between both version depending upon the script
arguments?
jue
------------------------------
Date: Mon, 6 Sep 2010 13:30:56 +0000 (UTC)
From: Andre Majorel <cheney@halliburton.com>
Subject: Re: POSIX and Math::Trig
Message-Id: <slrni89r8f.6fd.cheney@atc5.vermine.org>
On 2010-09-06, bugbear <bugbear@trim_papermule.co.uk_trim> wrote:
> Andre Majorel wrote:
>
>> I was hoping there was a way of saying "use X and quietly
>> redefine whatever you want", or "use X but don't redefine
>> anything". Or, at worst, "use X and import everything except
>> this and that".
>
> I think your purpose can be served by simply
> doing the "uses" you want, in the order you prefer.
> and turning the warnings off during this, via
> use/no warnings.
Tried about twenty variations around
use POSIX;
no warnings 'redefine';
use Math::Trig;
and still get the warnings. Would you have a working example ?
--
André Majorel http://www.teaser.fr/~amajorel/
"This album is very well mixed, so it is difficult to tell
what is what."
------------------------------
Date: Mon, 06 Sep 2010 14:45:41 +0100
From: bugbear <bugbear@trim_papermule.co.uk_trim>
Subject: Re: POSIX and Math::Trig
Message-Id: <uPednTzHSocYbRnRnZ2dnUVZ7oadnZ2d@brightview.co.uk>
Andre Majorel wrote:
> On 2010-09-06, bugbear <bugbear@trim_papermule.co.uk_trim> wrote:
>> Andre Majorel wrote:
>>
>>> I was hoping there was a way of saying "use X and quietly
>>> redefine whatever you want", or "use X but don't redefine
>>> anything". Or, at worst, "use X and import everything except
>>> this and that".
>> I think your purpose can be served by simply
>> doing the "uses" you want, in the order you prefer.
>> and turning the warnings off during this, via
>> use/no warnings.
>
> Tried about twenty variations around
>
> use POSIX;
> no warnings 'redefine';
> use Math::Trig;
>
> and still get the warnings. Would you have a working example ?
No - I just googled it.
Have you tried the full "blunderbuss" of
no warnings;
just to confirm the principle?
BugBear
------------------------------
Date: Mon, 6 Sep 2010 14:08:29 +0000 (UTC)
From: Andre Majorel <cheney@halliburton.com>
Subject: Re: POSIX and Math::Trig
Message-Id: <slrni89tet.6fd.cheney@atc5.vermine.org>
On 2010-09-06, bugbear <bugbear@trim_papermule.co.uk_trim> wrote:
> Andre Majorel wrote:
>> On 2010-09-06, bugbear <bugbear@trim_papermule.co.uk_trim> wrote:
>>> Andre Majorel wrote:
>>>
>>>> I was hoping there was a way of saying "use X and quietly
>>>> redefine whatever you want", or "use X but don't redefine
>>>> anything". Or, at worst, "use X and import everything except
>>>> this and that".
>>> I think your purpose can be served by simply
>>> doing the "uses" you want, in the order you prefer.
>>> and turning the warnings off during this, via
>>> use/no warnings.
>>
>> Tried about twenty variations around
>>
>> use POSIX;
>> no warnings 'redefine';
>> use Math::Trig;
>>
>> and still get the warnings. Would you have a working example ?
>
> No - I just googled it.
>
> Have you tried the full "blunderbuss" of
> no warnings;
> just to confirm the principle?
#!/usr/bin/perl -w
no warnings;
use POSIX;
use Math::Trig;
still spits warnings. You have to remove the -w to get rid of
them. I've tried blocks, eval string, eval block, "no warnings"
inside eval. Nothing makes a difference.
--
André Majorel http://www.teaser.fr/~amajorel/
"This album is very well mixed, so it is difficult to tell
what is what."
------------------------------
Date: Mon, 06 Sep 2010 10:27:24 -0400
From: Sherm Pendley <sherm.pendley@gmail.com>
Subject: Re: POSIX and Math::Trig
Message-Id: <m2iq2jq75f.fsf@sherm.shermpendley.com>
Andre Majorel <cheney@halliburton.com> writes:
> #!/usr/bin/perl -w
> no warnings;
> use POSIX;
> use Math::Trig;
>
> still spits warnings. You have to remove the -w to get rid of
> them. I've tried blocks, eval string, eval block, "no warnings"
> inside eval. Nothing makes a difference.
Yep. That's why "use warnings" is commonly preferred nowadays, because
"-w" is global in scope and can't be disabled with "no warnings". :-)
sherm--
--
Sherm Pendley
<http://camelbones.sourceforge.net>
Cocoa Developer
------------------------------
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:
To submit articles to comp.lang.perl.announce, send your article to
clpa@perl.com.
Back issues are available via anonymous ftp from
ftp://cil-www.oce.orst.edu/pub/perl/old-digests.
#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 V11 Issue 3119
***************************************