[21929] in Perl-Users-Digest
Perl-Users Digest, Issue: 4151 Volume: 10
daemon@ATHENA.MIT.EDU (Perl-Users Digest)
Wed Nov 20 21:10:47 2002
Date: Wed, 20 Nov 2002 18:10:14 -0800 (PST)
From: Perl-Users Digest <Perl-Users-Request@ruby.OCE.ORST.EDU>
To: Perl-Users@ruby.OCE.ORST.EDU (Perl-Users Digest)
Perl-Users Digest Wed, 20 Nov 2002 Volume: 10 Number: 4151
Today's topics:
Re: passing address between classes - OO type question (kit)
Re: passing address between classes - OO type question <tassilo.parseval@post.rwth-aachen.de>
Re: passing address between classes - OO type question (Tad McClellan)
reg exp problem (jaya prakash)
regex confusion <mememe@meme.com>
Re: regex confusion <holland@origo.phys.au.dk>
Re: regex confusion (Tad McClellan)
Re: regex confusion <mememe@meme.com>
Re: Regexp: Clearing captured value <nibl@onlinehome.de>
Re: Regexp: Clearing captured value <nibl@onlinehome.de>
Re: Regexp: Clearing captured value (Tad McClellan)
Using Getopts in a case-insensitive manner <N/A>
Re: Using Getopts in a case-insensitive manner <krahnj@acm.org>
Re: Using Getopts in a case-insensitive manner <paulo@xilinx.com>
Digest Administrivia (Last modified: 6 Apr 01) (Perl-Users-Digest Admin)
----------------------------------------------------------------------
Date: 20 Nov 2002 13:33:58 -0800
From: manutd_kit@yahoo.com (kit)
Subject: Re: passing address between classes - OO type question
Message-Id: <1751b2b5.0211201333.61c75cdf@posting.google.com>
Thanks for your help, and I've changed some coding after you've
corrected it, they are as follow:
---<Kid.pm>---
package Kid;
use strict;
use warnings;
sub new {
my $class = shift;
my $self = {
name => 'Kit',
age => 20
};
bless $self, $class;
return $self;
}
sub doHomeWork {
my ($self, $name) = @_;
print "$self->{name} is doing homework.";
}
sub doDishes {
my ($self, $name) = @_;
print "$self->{name} is doing dishes";
}
1;
---<Mum.pm>---
package Mum;
use strict;
use warnings;
use Kid;
sub new {
my $class = shift;
my $self = {
name => 'myMum',
age => 40
kid => {}, #I don't believe this is a Kid object,
}; #could you tell me what's this for?
bless $self, $class;
return $self;
}
sub giveBirth {
my ($self, $name) = @_;
${$self->{kid}}{$name} = Kid->new(name => $name); #line18
}
sub orderUp {
my ($self, $kid) = @_;
${$self->{kid}{$kid}}->doHomeWork; #line22
}
1;
---<driver.pl>---
use strict;
use warnings;
use Mum;
my $aMother = Mum -> new();
$aMother -> giveBirth();
$aMother -> orderUp();
-----------------
When I compile,
[kit1@cs family]$ perl driver.pl
it gives me an error like this:
Use of uninitialized value in hash element at Mum.pm line 18.
Use of uninitialized value in hash element at Mum.pm line 18.
Use of uninitialized value in hash element at Mum.pm line 22.
Not a SCALAR reference at Mum.pm line 22.
could you mind tell me what's wrong with it?
------------------
each time when "aMother" calls the giveBirth subroutine, it will make
a new Kid object, what if later she want to rename her "Kid"? How
should I modify it?
this is the core of my problem, I was thinking about having actually
two objects, one Mum and one Kid, they are all initialized in the
driver.pl. If Mum have the address of Kid, then Mum will be able to
control all Kid's operations, including change his name, do the home
work, ... will this works?
regarding to this, my question is how to let Mum knows what Kid's
"address" is?
Thanks, again, for your help.
Kit
------------------------------
Date: 20 Nov 2002 23:56:42 GMT
From: "Tassilo v. Parseval" <tassilo.parseval@post.rwth-aachen.de>
Subject: Re: passing address between classes - OO type question
Message-Id: <arh7fq$9jg$1@nets3.rz.RWTH-Aachen.DE>
Also sprach kit:
> Thanks for your help, and I've changed some coding after you've
> corrected it, they are as follow:
>
> ---<Kid.pm>---
> package Kid;
> use strict;
> use warnings;
>
> sub new {
> my $class = shift;
> my $self = {
> name => 'Kit',
> age => 20
> };
> bless $self, $class;
> return $self;
> }
The above is not correct. bless() does not change its first argument in
place. Instead, the blessed reference is what is returned by bless.
Therefore replace the last two or your lines with:
return bless $self, $class;
> sub doHomeWork {
> my ($self, $name) = @_;
> print "$self->{name} is doing homework.";
> }
> sub doDishes {
> my ($self, $name) = @_;
> print "$self->{name} is doing dishes";
> }
> 1;
> ---<Mum.pm>---
> package Mum;
> use strict;
> use warnings;
> use Kid;
>
> sub new {
> my $class = shift;
> my $self = {
> name => 'myMum',
> age => 40
> kid => {}, #I don't believe this is a Kid object,
> }; #could you tell me what's this for?
> bless $self, $class;
> return $self;
> }
Same here:
return bless $self, $class;
> sub giveBirth {
> my ($self, $name) = @_;
> ${$self->{kid}}{$name} = Kid->new(name => $name); #line18
> }
> sub orderUp {
> my ($self, $kid) = @_;
> ${$self->{kid}{$kid}}->doHomeWork; #line22
> }
> 1;
> ---<driver.pl>---
> use strict;
> use warnings;
> use Mum;
>
> my $aMother = Mum -> new();
> $aMother -> giveBirth();
> $aMother -> orderUp();
> -----------------
> When I compile,
> [kit1@cs family]$ perl driver.pl
>
> it gives me an error like this:
> Use of uninitialized value in hash element at Mum.pm line 18.
> Use of uninitialized value in hash element at Mum.pm line 18.
These two are not surprising. You call giveBirth() without any
arguments, therefore $name (the second argument in giveBIrth()) is
undefined. Putting it differently: you give birth to a child without
name.
> Use of uninitialized value in hash element at Mum.pm line 22.
> Not a SCALAR reference at Mum.pm line 22.
You wrote:
${$self->{kid}{$kid}}->doHomeWork;
'${ EXPRESSION }' requires EXPRESSION to be a scalar reference. But it
is not. '$self->{kid}{$kid}' is actually a hash-reference, a blessed
one. It's one of the Kid objects. Since you call the methods directly on
a blessed reference, it simply needs to be:
$self->{kid}{$kid}->doHomeWork;
> could you mind tell me what's wrong with it?
>
> ------------------
>
> each time when "aMother" calls the giveBirth subroutine, it will make
> a new Kid object, what if later she want to rename her "Kid"? How
> should I modify it?
Simply add a rename() method to the Kid class:
sub rename {
my ($self, $newname) = @_;
$self->{name} = $newname;
}
> this is the core of my problem, I was thinking about having actually
> two objects, one Mum and one Kid, they are all initialized in the
> driver.pl. If Mum have the address of Kid, then Mum will be able to
> control all Kid's operations, including change his name, do the home
> work, ... will this works?
Yes, that's precisely how object-orientedness should work. What you call
address is more commonly called reference. The Mum has a pool of
children. Inside a Mum-object, the children are stored as the keys of a
hash-reference. The values are references to the actual Kid objects. If
you read 'reference': Don't try to dereference them. Instead treat them
as an object because that's all what they are. In Perl objects are
always references.
> regarding to this, my question is how to let Mum knows what Kid's
> "address" is?
I think you are confusing a few things here. Addresses of something may
be important in languages with real pointer-types such as C. In Perl,
they don't really matter. They are, however, implicitely used in one
situation, namely if you want to compare two objects for equality:
if ($kid1 == $kid2) {
...
}
Under the hoods this compares the addresses. If they are identical, the
objects are identical as well and if you rename() $kid1 $kid2 is renamed
as well...just because those are the same two objects.
The question that remains (at least for me): Why does the Mum need to
know the address of the Kid? Perhaps you mean something else here.
Tassilo
--
$_=q!",}])(tsuJ[{@"tnirp}3..0}_$;//::niam/s~=)]3[))_$-3(rellac(=_$({
pam{rekcahbus;})(rekcah{lrePbus;})(lreP{rehtonabus;})(rehtona{tsuJbus!;
$_=reverse;s/sub/(reverse"bus").chr(32)/xge;tr~\n~~d;eval;
------------------------------
Date: Wed, 20 Nov 2002 18:43:38 -0600
From: tadmc@augustmail.com (Tad McClellan)
Subject: Re: passing address between classes - OO type question
Message-Id: <slrnatob1q.2lv.tadmc@magna.augustmail.com>
kit <manutd_kit@yahoo.com> wrote:
> Thanks for your help,
^^^^
Whose help?
You should have quoted a bit of context there.
> ---<Kid.pm>---
> sub doHomeWork {
> my ($self, $name) = @_;
^^^^^
^^^^^
What is that for?
You never use it.
> ---<Mum.pm>---
> package Mum;
> use strict;
> use warnings;
> use Kid;
>
> sub new {
> my $class = shift;
> my $self = {
> name => 'myMum',
> age => 40
^^^^
Syntax error.
Please post real Perl code!
> kid => {}, #I don't believe this is a Kid object,
> }; #could you tell me what's this for?
It can contain all of Mum's children.
Key is the child's name, value is the Kid object (a blessed reference)
itself.
But using a hash is a Bad Idea because then the name will be stored
in 2 places, and you will need to be careful to change it in
both places.
kid => [], # an array is good enough,
# plus you can then have a "first born" :-)
> bless $self, $class;
> return $self;
> }
> sub giveBirth {
> my ($self, $name) = @_;
> ${$self->{kid}}{$name} = Kid->new(name => $name); #line18
^^ ^
^^ ^
Those aren't needed, so they shouldn't be there.
Your definition of Kid->new() makes no use of its arguments,
so why call it with arguments?
> }
> sub orderUp {
> my ($self, $kid) = @_;
> ${$self->{kid}{$kid}}->doHomeWork; #line22
^^ ^
^^ ^
Removed those, fixed the method calls, and it worked for me.
> ---<driver.pl>---
> $aMother -> giveBirth();
You call giveBirth() with no arguments, so its $name variable
will be undef.
> -----------------
> When I compile,
> [kit1@cs family]$ perl driver.pl
That is not compiling, that is _executing_.
perl -c driver.pl
_That_ would be (just) compiling.
> it gives me an error like this:
> Use of uninitialized value in hash element at Mum.pm line 18.
> Use of uninitialized value in hash element at Mum.pm line 18.
> Use of uninitialized value in hash element at Mum.pm line 22.
You are not providing arguments in your method calls.
The resulting undefs cause those warnings.
> each time when "aMother" calls the giveBirth subroutine, it will make
> a new Kid object, what if later she want to rename her "Kid"? How
> should I modify it?
You have a poor design. The kid's name is stored in two
places, in the Kid object AND in Mum's kid{} hash.
So you need to change it in both places.
> this is the core of my problem, I was thinking about having actually
> two objects, one Mum and one Kid,
You weren't just thinking about it, that (two objects) is what you have.
> they are all initialized in the
> driver.pl. If Mum have the address
You mean a _reference_, not an "address".
> of Kid, then Mum will be able to
> control all Kid's operations, including change his name, do the home
> work, ... will this works?
It _is_ working. The reference to the kid is a value in mum's
kid hash.
> regarding to this, my question is how to let Mum knows what Kid's
> "address" is?
You can't.
You can, and are, letting Mum have a reference to the kid,
and that is all you need.
--
Tad McClellan SGML consulting
tadmc@augustmail.com Perl programming
Fort Worth, Texas
------------------------------
Date: 20 Nov 2002 14:18:03 -0800
From: prakashrj@hotmail.com (jaya prakash)
Subject: reg exp problem
Message-Id: <ee5d9.0211201418.4874c0a0@posting.google.com>
Hi,
The following code snippet which was part my program was giving the
same output for Diffrent Data Inputs. I am not able to comprehend the
reason behind it and any help will be greatly appreciated.
#!/usr/bin/perl -w
my($strict, $sequence, $regexp) = ();
while(<DATA>) {
chomp;
$sequence .= $_;
}
$sequence =~ s/\s*//g;
$sequence =~ tr/A-Z/a-z/;
$strict = 8;
$regexp = '(.{1,3})\1{' . ($strict - 1) . ',}';
while($sequence =~ /$regexp/g) {
print "length: " . length($&) . "\t$&\n";
}
__DATA__
tattcaacctgtcgctgcTAGCGGACATGTAGGCTGCttccttttttttttttttttttt
ttttttgctactgcctatgatgcttcagtgagctgccccacaccacgcgtatatcttggc
aggaagagctacgggataaaggcttagaagttaaattactgggccaaagagtatgtatgt
tattcaacctgtcgctgcTAGCGGACATGTAGGCTGCttccttttttttttttttttttt
tttttgctactgcctatgatgcttcagtgagctgccccacaccacgcgtatatcttggc
aggaagagctacgggataaaggcttagaagttaaattactgggccaaagagtatgtatgt
Notice that first 3 lines contain 25 continous 't's
and second line contains 24 continous 't's
The following is the output from that program
length: 24 tttttttttttttttttttttttt
length: 24 tttttttttttttttttttttttt
Thanks,
Prakash.
------------------------------
Date: Wed, 20 Nov 2002 13:34:34 -0700
From: "Canucklehead" <mememe@meme.com>
Subject: regex confusion
Message-Id: <argrkr$i76us$1@ID-158028.news.dfncis.de>
Hey all,
I am trying to get my head wrapped around regex. Got to say it's a good
challange. I was wondering if the fine folks here could help me out.
Say I have a string containing
"usr/local/home/someWebsite/foo/htdocs/pdr/xmlData/test/test4.xml" I would
like to parse out everything except the ending file name (which could be any
length of characters). In my head I know what needs to be done but
translating that into perl is another thing. =)
I really have nothing written and would appreciate any examples or nudges in
the right direction.
Thanks
---------------------------
"I don't apologize. I'm sorry, but that's just the way I am."
- Homer Simpson
------------------------------
Date: 20 Nov 2002 22:37:25 +0100
From: Steve Holland <holland@origo.phys.au.dk>
Subject: Re: regex confusion
Message-Id: <w47vg2r7wiy.fsf@origo.phys.au.dk>
"Canucklehead" <mememe@meme.com> writes:
> Hey all,
>
> I am trying to get my head wrapped around regex. Got to say it's a good
> challange. I was wondering if the fine folks here could help me out.
>
> Say I have a string containing
> "usr/local/home/someWebsite/foo/htdocs/pdr/xmlData/test/test4.xml" I would
> like to parse out everything except the ending file name (which could be any
> length of characters). In my head I know what needs to be done but
> translating that into perl is another thing. =)
>
> I really have nothing written and would appreciate any examples or nudges in
> the right direction.
#! /usr/local/bin/perl
use strict;
use warnings;
print "Enter a string : ";
my $dir = <STDIN>;
chomp($dir);
$dir =~ m/.\/([^\/]*)$/;
print "$1\n";
I have a nagging feeling that there is a much neater way to do
this.
=====================================================================
To find out who and where I am look at:
http://www.nd.edu/~sholland/index.html
"An eagle can not fly with a broken left wing."
=====================================================================
------------------------------
Date: Wed, 20 Nov 2002 16:00:33 -0600
From: tadmc@augustmail.com (Tad McClellan)
Subject: Re: regex confusion
Message-Id: <slrnato1g1.22r.tadmc@magna.augustmail.com>
Canucklehead <mememe@meme.com> wrote:
> Say I have a string containing
> "usr/local/home/someWebsite/foo/htdocs/pdr/xmlData/test/test4.xml" I would
> like to parse out everything except the ending file name
Portable and readable:
use File::Basename;
my $file = basename $fullpath;
Non-portable and obscure:
(my $file = $fullpath) =~ s#.*/##;
--
Tad McClellan SGML consulting
tadmc@augustmail.com Perl programming
Fort Worth, Texas
------------------------------
Date: Wed, 20 Nov 2002 15:29:56 -0700
From: "Canucklehead" <mememe@meme.com>
Subject: Re: regex confusion
Message-Id: <arh2d5$iq6n2$1@ID-158028.news.dfncis.de>
"Tad McClellan" <tadmc@augustmail.com> wrote in message
news:slrnato1g1.22r.tadmc@magna.augustmail.com...
> Canucklehead <mememe@meme.com> wrote:
>
>
> > Say I have a string containing
> > "usr/local/home/someWebsite/foo/htdocs/pdr/xmlData/test/test4.xml" I
would
> > like to parse out everything except the ending file name
>
>
> Portable and readable:
>
> use File::Basename;
> my $file = basename $fullpath;
>
>
> Non-portable and obscure:
>
> (my $file = $fullpath) =~ s#.*/##;
>
Excelllllllllent! That worked perfectly! Exactly what I want!
Thank you so much for everyone's help with adding to my perl arsenal! =)
------------------------------
Date: Wed, 20 Nov 2002 23:35:52 +0100
From: nibl <nibl@onlinehome.de>
Subject: Re: Regexp: Clearing captured value
Message-Id: <4f3otu06p3r54l3cdcgvknpro8kgi75eud@4ax.com>
On Wed, 20 Nov 2002 11:44:58 +0000 (UTC), Bernard El-Hagin
<bernard.el-hagin@DODGE_THISlido-tech.net> wrote:
>> $1 = "";
>
>Did you try that? Well, you should have.
No I will, but afaik those variables are read-only. Certainly cannot
undef them, tried that.
nibl
------------------------------
Date: Wed, 20 Nov 2002 23:39:53 +0100
From: nibl <nibl@onlinehome.de>
Subject: Re: Regexp: Clearing captured value
Message-Id: <ci3otu8e5p9hq6fus512fjlq10vaa14osp@4ax.com>
On Wed, 20 Nov 2002 06:46:37 -0600, tadmc@augustmail.com (Tad
McClellan) wrote:
>> How do you clear $1,
>
>It will be cleared when the match fails.
That doesn't seem so. The result from the previous match is still in
$1 if no match occured on the present comparison.
>Check whether or not the match succeeded before using
>the dollar-digit variables.
ah, you mean like:
my $test= ($foo =~ m/.../);
and test would be empty if no match?
nibl
------------------------------
Date: Wed, 20 Nov 2002 17:31:33 -0600
From: tadmc@augustmail.com (Tad McClellan)
Subject: Re: Regexp: Clearing captured value
Message-Id: <slrnato6ql.2lv.tadmc@magna.augustmail.com>
nibl <nibl@onlinehome.de> wrote:
> On Wed, 20 Nov 2002 06:46:37 -0600, tadmc@augustmail.com (Tad
> McClellan) wrote:
>
>>> How do you clear $1,
>>
>>It will be cleared when the match fails.
>
> That doesn't seem so. The result from the previous match is still in
> $1 if no match occured on the present comparison.
Oops. You are right. I misspoke.
Maybe we'd better go look it up...
perldoc perlre
The numbered variables ($1, $2, $3, etc.) and the related punctuation
set (C<$+>, C<$&>, C<$`>, and C<$'>) are all dynamically scoped
until the end of the enclosing block or until the next successful
match, whichever comes first.
So, all we need is a successful match to clear their values.
I cannot imagine a situation where you would need to clear
the dollar digit variables.
But if such a situation does indeed exist, you can clear them with:
/./s; # match succeeds
if the string ($_ in this case) contains at least one character.
But don't do that! You do not need to.
>>Check whether or not the match succeeded before using
>>the dollar-digit variables.
>
> ah, you mean like:
>
> my $test= ($foo =~ m/.../);
No need for the temporary $test variable, you can test the
return value from the m// operator directly:
if ( $foo =~ m/.../ ) {
# use dollar digit variables here
}
# do not use dollar digit variables here (they might
# have "stale" values in them).
> and test would be empty if no match?
No, $test would be "a false value".
The empty string is only one of the possible false values in Perl.
--
Tad McClellan SGML consulting
tadmc@augustmail.com Perl programming
Fort Worth, Texas
------------------------------
Date: Wed, 20 Nov 2002 19:06:59 GMT
From: "Okey Laboratory" <N/A>
Subject: Using Getopts in a case-insensitive manner
Message-Id: <H5w29J.9p2@campus-news-reading.utoronto.ca>
Hey all,
I would like to accept cmd-line arguments using Getopts::Std, which is
passing the results into a hash. The problem for me is, I want to ensure
that the user *can* enter arguments in either case, but that they only enter
an argument once. How can I test this for any number of flags? To do just
once, the code I am using is:
use strict;
use Getopts::Std;
getopts('c:C:', \%args);
if ($args{c} && $args{C}) {
die "You entered a command-line argument twice\n";
}
elsif (!$args{c} && !$args{C}) {
die "A command-line argument is missing\n";
}
Is there an easy way to automate this, instead of using a very large
if-elsif ladder?
Any ideas/suggestions very much welcome!
Tats
------------------------------
Date: Wed, 20 Nov 2002 23:20:49 GMT
From: "John W. Krahn" <krahnj@acm.org>
Subject: Re: Using Getopts in a case-insensitive manner
Message-Id: <3DDC1891.303E70AC@acm.org>
Okey Laboratory wrote:
>
> I would like to accept cmd-line arguments using Getopts::Std, which is
> passing the results into a hash. The problem for me is, I want to ensure
> that the user *can* enter arguments in either case, but that they only enter
> an argument once. How can I test this for any number of flags? To do just
> once, the code I am using is:
>
> use strict;
> use Getopts::Std;
>
> getopts('c:C:', \%args);
>
> if ($args{c} && $args{C}) {
> die "You entered a command-line argument twice\n";
> }
> elsif (!$args{c} && !$args{C}) {
> die "A command-line argument is missing\n";
> }
>
> Is there an easy way to automate this, instead of using a very large
> if-elsif ladder?
>
> Any ideas/suggestions very much welcome!
use warnings;
use strict;
use Getopts::Std;
@ARGV = map { s/^(-.*)/\L$1/; $_ } @ARGV;
# OR
# @ARGV = grep [ s/^(-.*)/\L$1/ ], @ARGV;
my %args;
getopts( 'c:', \%args );
unless ( exists $args{'c'} ) {
die "A command-line argument is missing\n";
}
John
--
use Perl;
program
fulfillment
------------------------------
Date: Wed, 20 Nov 2002 16:35:29 -0800
From: Paulo Dutra <paulo@xilinx.com>
To: krahnj@acm.org
Subject: Re: Using Getopts in a case-insensitive manner
Message-Id: <3DDC2A51.3E82125C@xilinx.com>
&Getopt::Long::config('ignore_case');
&GetOptions('a=s', 'h');
"John W. Krahn" wrote:
>
> Okey Laboratory wrote:
> >
> > I would like to accept cmd-line arguments using Getopts::Std, which is
> > passing the results into a hash. The problem for me is, I want to ensure
> > that the user *can* enter arguments in either case, but that they only enter
> > an argument once. How can I test this for any number of flags? To do just
> > once, the code I am using is:
> >
> > use strict;
> > use Getopts::Std;
> >
> > getopts('c:C:', \%args);
> >
> > if ($args{c} && $args{C}) {
> > die "You entered a command-line argument twice\n";
> > }
> > elsif (!$args{c} && !$args{C}) {
> > die "A command-line argument is missing\n";
> > }
> >
> > Is there an easy way to automate this, instead of using a very large
> > if-elsif ladder?
> >
> > Any ideas/suggestions very much welcome!
>
> use warnings;
> use strict;
> use Getopts::Std;
>
> @ARGV = map { s/^(-.*)/\L$1/; $_ } @ARGV;
> # OR
> # @ARGV = grep [ s/^(-.*)/\L$1/ ], @ARGV;
>
> my %args;
> getopts( 'c:', \%args );
>
> unless ( exists $args{'c'} ) {
> die "A command-line argument is missing\n";
> }
>
> John
> --
> use Perl;
> program
> fulfillment
--
/ 7\'7 Paulo Dutra (paulo.dutra@xilinx.com)
\ \ ` Xilinx hotline@xilinx.com
/ / 2100 Logic Drive http://www.xilinx.com
\_\/.\ San Jose, California 95124-3450 USA
------------------------------
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.
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 4151
***************************************