[30612] in Perl-Users-Digest
Perl-Users Digest, Issue: 1855 Volume: 11
daemon@ATHENA.MIT.EDU (Perl-Users Digest)
Sun Sep 14 21:09:46 2008
Date: Sun, 14 Sep 2008 18: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 Sun, 14 Sep 2008 Volume: 11 Number: 1855
Today's topics:
Re: check columns /tabs between two patterns <rvtol+news@isolution.nl>
Re: check columns /tabs between two patterns <m@rtij.nl.invlalid>
Re: check columns /tabs between two patterns <tadmc@seesig.invalid>
Re: check columns /tabs between two patterns (fidokomik\)
Re: Requiring Lexical $_ / Obliterating Global $_? (Tim McDaniel)
Re: Requiring Lexical $_ / Obliterating Global $_? <rvtol+news@isolution.nl>
Re: Requiring Lexical $_ / Obliterating Global $_? (Tim McDaniel)
Re: Requiring Lexical $_ / Obliterating Global $_? <m@rtij.nl.invlalid>
Re: Requiring Lexical $_ / Obliterating Global $_? (Tim McDaniel)
Re: Requiring Lexical $_ / Obliterating Global $_? <rvtol+news@isolution.nl>
Re: Requiring Lexical $_ / Obliterating Global $_? <ben@morrow.me.uk>
Re: simple regex not working <rvtol+news@isolution.nl>
Re: simple regex not working <john@castleamber.com>
transfer value from one page to single frame of a secon lnorav@gmail.com
Re: transfer value from one page to single frame of a s <bill@ts1000.us>
Digest Administrivia (Last modified: 6 Apr 01) (Perl-Users-Digest Admin)
----------------------------------------------------------------------
Date: Sun, 14 Sep 2008 13:06:55 +0200
From: "Dr.Ruud" <rvtol+news@isolution.nl>
Subject: Re: check columns /tabs between two patterns
Message-Id: <gaj2b3.1ek.1@news.isolution.nl>
Marek schreef:
> I have a tab separated text file. I want to check, whether the
> contents are in the right fields.
Maybe you can use this approach:
Read a line, split on /\t/ and store in an array, then do tests.
while ( <> ) {
/^\s*(?:#|$)/ and next; # comment- and blank lines
my @data = split /\t/;
... # tests
}
> "Wrong number of tabs between \"$1\" and the number \"$2\" in the
> line: \n\t$_\n\n";
> [...]
> "Wrong number of tabs between \"$1\" and the number \"$2\" in the
> line: \n\t$_\n\n";
> [...]
> "Wrong number of tabs between \"$1\" and the number \"$2\" in the
> line: \n\t$_\n\n";
See also `perldoc -f sprintf`, you want to create a single format string
for that.
--
Affijn, Ruud
"Gewoon is een tijger."
------------------------------
Date: Sun, 14 Sep 2008 17:12:56 +0200
From: Martijn Lievaart <m@rtij.nl.invlalid>
Subject: Re: check columns /tabs between two patterns
Message-Id: <pan.2008.09.14.15.12.56@rtij.nl.invlalid>
On Sun, 14 Sep 2008 02:20:45 -0700, Marek wrote:
> Hello all!
>
>
> I have a tab separated text file. I want to check, whether the contents
> are in the right fields. I have constructed here a little example.
> Question is, how to check for right number of tabs between "pattern" and
> "number" ... In my example, there is checked only one wrong example. To
> be clear I take this example:
>
> (pattern3)\t{4,}(number3)
>
> this is checking 4 or more tabs between pattern3 and number3, which is
> wrong. Only 3 tabs are right! So I have to check also for 2 tabs or 1
> tab, which would be wrong too ...
Something like (untested) /(pattern3)(?:\t{,2}|\t{4,}(number3?)/ maybe?
But I would do something like:
elsif (/(pattern2)(\t+)(number2)\s*/i) {
print
"Wrong number of tabs between \"$1\" and the number \"$2\" in the line:
\n\t$_\n\n"
if length($2) != 2;
}
And even that can be optimized further, but this should get you going.
HTH,
M4
------------------------------
Date: Sun, 14 Sep 2008 09:48:38 -0500
From: Tad J McClellan <tadmc@seesig.invalid>
Subject: Re: check columns /tabs between two patterns
Message-Id: <slrngcq926.7lr.tadmc@tadmc30.sbcglobal.net>
Marek <mstep@podiuminternational.org> wrote:
> Question is, how to check for right number of tabs between
> "pattern" and "number" ... In my example, there is checked only one
> wrong example. To be clear I take this example:
>
> (pattern3)\t{4,}(number3)
>
> this is checking 4 or more tabs between pattern3 and number3, which is
> wrong. Only 3 tabs are right! So I have to check also for 2 tabs or 1
> tab, which would be wrong too ...
> elsif (/(pattern3)\t{4,}(number3)\s*/i) {
elsif ( ! /(pattern3)\t{3}(number3)\s*/i ) {
--
Tad McClellan
email: perl -le "print scalar reverse qq/moc.noitatibaher\100cmdat/"
------------------------------
Date: Mon, 15 Sep 2008 02:48:39 +0200
From: "Petr Vileta \(fidokomik\)" <stoupa@practisoft.cz>
Subject: Re: check columns /tabs between two patterns
Message-Id: <gakbok$1u4c$1@adenine.netfront.net>
Marek wrote:
> Hello all!
>
>
> (pattern3)\t{4,}(number3)
>
> this is checking 4 or more tabs between pattern3 and number3, which is
> wrong. Only 3 tabs are right! So I have to check also for 2 tabs or 1
> tab, which would be wrong too ...
>
>
Maybe you can test number of tabs more simly
#! /usr/local/bin/perl
use warnings;
use strict;
while (<DATA>) {
s/\s+#.+//;
next if /^\s*$/;
##################
# my modification
##################
/(pattern2)(\t*)(number2)\s*/i;
if(length($2) != 3) {
print "Wrong number of tabs between \"$1\" and the number \"$2\" in the
line: \n\t$_\n\n";
}
else {
print "\nGood number of tabs!\n\n";
}
##################
# end of modification
##################
}
--
Petr Vileta, Czech republic
(My server rejects all messages from Yahoo and Hotmail.
Send me your mail from another non-spammer site please.)
Please reply to <petr AT practisoft DOT cz>
-- Posted on news://freenews.netfront.net - Complaints to news@netfront.net --
------------------------------
Date: Sun, 14 Sep 2008 02:33:12 -0500
From: tmcd@panix.com (Tim McDaniel)
Subject: Re: Requiring Lexical $_ / Obliterating Global $_?
Message-Id: <oarup5-4vg.ln1@tmcd.austin.tx.us>
In article <gagbc9.1fg.1@news.isolution.nl>,
Dr.Ruud <rvtol+news@isolution.nl> wrote:
>Tim McDaniel schreef:
>
>> Currently I do
>> local $_;
>> at the start of each sub
>
>Why? At least I never needed to do that, and I assume virtually
>nobody does.
>
>The rule is simple:
>Either a sub can change $_ in a documented way, or it leaves it
>untouched.
That's like saying "In FORTRAN, the rule is simple: never use an
undeclared variable". What about typos and oversights? If having
rules was sufficient to prevent bugs, there'd be little need for error
messages or warnings.
But I didn't consider sufficiently the fact that foreach, map, and
grep localize changes to $_. If I do an accidental "s///" without
"=~", then the bug will probably be noticed just because it's using a
unexpected value of $_ rather than whatever variable I meant.
"while (<>)" and explicit assignment to $_ (to make further m// and
s/// actions more consise) are the only idioms I can think of where a
persistent change to $_ occurs naturally.
But I do both of those with some frequency.
--
Tim McDaniel; Reply-To: tmcd@panix.com
------------------------------
Date: Sun, 14 Sep 2008 18:41:42 +0200
From: "Dr.Ruud" <rvtol+news@isolution.nl>
Subject: Re: Requiring Lexical $_ / Obliterating Global $_?
Message-Id: <gajm1h.ps.1@news.isolution.nl>
Tim McDaniel schreef:
> [ accidently changing $_ ]
> What about typos and oversights? If having
> rules was sufficient to prevent bugs, there'd be little need for error
> messages or warnings.
I find it hard to come up with an example of that in the last year, in
the group of about 30 Perl developers that I work with.
The only one I remember is a bug found in legacy code that looks like
$s =~ /x/ and /y/ and run();
which was probably once $_ oriented code (I never actually checked).
> If I do an accidental "s///" without
> "=~", then the bug will probably be noticed just because it's using a
> unexpected value of $_ rather than whatever variable I meant.
Yes, that is one that someone might do wrong. The scope of an implicit
localized $_ is best small, often not more than 1 or 2 lines.
Just use a "for my $_value (@values) { ... }" where feasible.
I do see some use now for something like "DEBUG>1 and local $_;" at the
start of each sub.
> explicit assignment to $_ (to make further m// and
> s/// actions more consise)
Stop doing that. You can use
for ( $scalar ) { ... }
and code like
s/^\s+//, s/\s+$//, s/\s+/ /g for $old, $new;
instead.
--
Affijn, Ruud
"Gewoon is een tijger."
------------------------------
Date: Sun, 14 Sep 2008 11:08:14 -0500
From: tmcd@panix.com (Tim McDaniel)
Subject: Re: Requiring Lexical $_ / Obliterating Global $_?
Message-Id: <egpvp5-fhi.ln1@tmcd.austin.tx.us>
In article <pan.2008.09.14.08.46.23@rtij.nl.invlalid>,
Martijn Lievaart <m@rtij.nl.invlalid> wrote:
>On Sat, 13 Sep 2008 13:46:08 +0200, Peter J. Holzer wrote:
>
>> I don't think so. In that case, if he forgets to declare $_ in a
>> sub, the globally defined lexical $_ will be used, which isn't much
>> of an improvement over using the predefined $_. In both cases the
>> omission will not be noticed and two subs may inadvertently change
>> the same $_.
>
>You are right.
>
>But then, where draw the line? Every block? Every sub?
I'd like to draw the line in the same place I draw the line on
declaring any other variable. I want a way to make $_ work by the
same rules as any other variable, except for being the implicit
operand in a number of operators.
I would do
foreach my $_ (...)
in the same circumstances that I would do
foreach my $i (...)
or
my $_;
in the same circumstances that I would do
my $file_line;
Because of the ugliness of this [1]
while (defined(my $_ = <FILE>)) {
I'd probably have to make $_ a block or sub my variable to be able to
still write
while (<FILE>) {
Perhaps, in places where I have to use < Perl 5.10, I should be
local-ing it in more places, in the ways shown above.
[footnote 1] Can I just say that I still can't wrap my head around how
a declaration can be buried in the middle of a statement, which is
bizarre to someone who grew up on FORTRAN, C, or most procedural
languages, and that its "enclosing" scope is outside the {...}?
--
Tim McDaniel; Reply-To: tmcd@panix.com
------------------------------
Date: Sun, 14 Sep 2008 21:50:52 +0200
From: Martijn Lievaart <m@rtij.nl.invlalid>
Subject: Re: Requiring Lexical $_ / Obliterating Global $_?
Message-Id: <pan.2008.09.14.19.50.51@rtij.nl.invlalid>
On Sun, 14 Sep 2008 11:08:14 -0500, Tim McDaniel wrote:
> In article <pan.2008.09.14.08.46.23@rtij.nl.invlalid>, Martijn Lievaart
> <m@rtij.nl.invlalid> wrote:
>>On Sat, 13 Sep 2008 13:46:08 +0200, Peter J. Holzer wrote:
>>
>>> I don't think so. In that case, if he forgets to declare $_ in a sub,
>>> the globally defined lexical $_ will be used, which isn't much of an
>>> improvement over using the predefined $_. In both cases the omission
>>> will not be noticed and two subs may inadvertently change the same $_.
>>
>>You are right.
>>
>>But then, where draw the line? Every block? Every sub?
>
> I'd like to draw the line in the same place I draw the line on declaring
> any other variable. I want a way to make $_ work by the same rules as
> any other variable, except for being the implicit operand in a number of
> operators.
The implication of such is that simply ::$_ should not be defined[1].
Which could be set by a (to be proposed) pragma I suppose. I like it.
> [footnote 1] Can I just say that I still can't wrap my head around how a
> declaration can be buried in the middle of a statement, which is bizarre
> to someone who grew up on FORTRAN, C, or most procedural languages, and
> that its "enclosing" scope is outside the {...}?
To me, having moved from FORTRAN/Basic/COBOL to C to C++ to Perl a.o., it
is bizarre not to be able to do this. Although I can see why embedding a
complex declaration in the middle of a C statement would pose a parsing
challenge.
[1] Not set to undef, just does not exist!
------------------------------
Date: Sun, 14 Sep 2008 15:23:14 -0500
From: tmcd@panix.com (Tim McDaniel)
Subject: Re: Requiring Lexical $_ / Obliterating Global $_?
Message-Id: <ie80q5-1sj.ln1@tmcd.austin.tx.us>
In article <gajm1h.ps.1@news.isolution.nl>,
Dr.Ruud <rvtol+news@isolution.nl> wrote:
>I do see some use now for something like "DEBUG>1 and local $_;" at
>the start of each sub.
Where DEBUG is a numeric constant? I think it's a nightmare to have
code change its behavior in subtle ways while debugging. ("Subtle
ways" meaning not the usual debug actions, like outputting log
messages, assertion checking, and such, which usually shouldn't affect
the program's state.) A $_ leakage problem would silently go away the
moment you turned on debugging!
>> explicit assignment to $_ (to make further m// and
>> s/// actions more consise)
>
>Stop doing that.
That came across as rather a harsh command and, um, you're not my
boss.
>You can use
>
> for ( $scalar ) { ... }
>
>and code like
>
> s/^\s+//, s/\s+$//, s/\s+/ /g for $old, $new;
>
>instead.
Thank you for the suggestions, though I'd like to mull over how
understandable "foreach" with one item would be to other readers.
--
Tim McDaniel; Reply-To: tmcd@panix.com
------------------------------
Date: Mon, 15 Sep 2008 00:23:46 +0200
From: "Dr.Ruud" <rvtol+news@isolution.nl>
Subject: Re: Requiring Lexical $_ / Obliterating Global $_?
Message-Id: <gak9v5.o8.1@news.isolution.nl>
Tim McDaniel schreef:
> Dr.Ruud:
>> I do see some use now for something like "DEBUG>1 and local $_;" at
>> the start of each sub.
>
> Where DEBUG is a numeric constant?
Put
use constant DEBUG => 0;
in a convenient place. That DEBUG is actually a "constant sub". Perl's
compiler uses this to ignore that code, so it will not be compiled but
skipped. See `perldoc constant` for details.
> I think it's a nightmare to have
> code change its behavior in subtle ways while debugging.
That is exactly why the ">1" is there, so you can still set DEBUG to 1
to not have the line.
Give it more thought, because it is useful.
$ perl -MO=Deparse -e'
use constant DEBUG => 0;
DEBUG>1 and local $_;
'
use constant ('DEBUG', 0);
'???';
-e syntax OK
$ perl -MO=Deparse -e'
use constant DEBUG => 1;
DEBUG>1 and local $_;
'
use constant ('DEBUG', 1);
'???';
-e syntax OK
$ perl -MO=Deparse -e'
use constant DEBUG => 2;
DEBUG>1 and local $_;
'
use constant ('DEBUG', 2);
local $_;
-e syntax OK
The 1 is arbitrary, you can set the lower limit as high as you need.
As you know, because "local $_;" sets $_ to undef, it can expose some
bugs, like in
$ perl -wle 's/a/b/'
Use of uninitialized value in substitution (s///) at -e line 1.
(I am assuming that "use strict; use warnings;" are in every file.)
> ("Subtle
> ways" meaning not the usual debug actions, like outputting log
> messages, assertion checking, and such, which usually shouldn't affect
> the program's state.) A $_ leakage problem would silently go away the
> moment you turned on debugging!
Once you grok the ">1", you'll see that you have the choice.
>>> explicit assignment to $_ (to make further m// and
>>> s/// actions more consise)
>>
>> Stop doing that.
>
> That came across as rather a harsh command and, um, you're not my
> boss.
One is what one reads. I can't mind you picking it up as harsh, because
I can't know in what mood you will be when reading what I wrote. Always
read such things as if written by a friend, it really helps.
And it was a reference to the well known story that starts with "Doctor,
it hurts when I do this.".
>> You can use
>>
>> for ( $scalar ) { ... }
>>
>> and code like
>>
>> s/^\s+//, s/\s+$//, s/\s+/ /g for $old, $new;
>>
>> instead.
>
> Thank you for the suggestions, though I'd like to mull over how
> understandable "foreach" with one item would be to other readers.
Do with it whatever you want. I like it a lot.
My second example has two items, but only after I substituted "$input"
by "$old, $new".
--
Affijn, Ruud
"Gewoon is een tijger."
------------------------------
Date: Sun, 14 Sep 2008 23:36:21 +0100
From: Ben Morrow <ben@morrow.me.uk>
Subject: Re: Requiring Lexical $_ / Obliterating Global $_?
Message-Id: <58g0q5-v4l.ln1@osiris.mauzo.dyndns.org>
Quoth tmcd@panix.com:
> Currently I do
> local $_;
> at the start of each sub, but it's an annoyance and it's not
> fail-safe (I can forget).
>
> Just found out about Perl 5.10. Pretty cool.
>
> Lexical $_
<snip>
>
> Is there any way that I can dispose of any possibility of accidentally
> using the global dynamic variable $_? That is, where by default
You want to tie (the global) $_ to a class that looks like
sub FETCH { croak "Global \$_ forbidden" }
sub STORE { croak "Global \$_ forbidden" }
I swear there's a module on CPAN that implements this, but I can't find
it :(.
Ben
--
It will be seen that the Erwhonians are a meek and long-suffering people,
easily led by the nose, and quick to offer up common sense at the shrine of
logic, when a philosopher convinces them that their institutions are not based
on the strictest morality. [Samuel Butler, paraphrased] ben@morrow.me.uk
------------------------------
Date: Sun, 14 Sep 2008 13:31:47 +0200
From: "Dr.Ruud" <rvtol+news@isolution.nl>
Subject: Re: simple regex not working
Message-Id: <gaj3p2.lk.1@news.isolution.nl>
John Bokma schreef:
> John:
>> I'm trying to match a string beginning a letter A to R
>> followed by any letter (from S to Z) or any digit.
>>
>> if ($x =~ /([A-Ra-r][S-Zs-z0-9]+)/) {$error=""; return}
>
> if ($x =~ /^[A-R][S-Z\d]/i ) {
>
> $error = "";
> return;
> }
Ignoring the intricacies of /i and \d is not best practice, especially
when it is so easy to avoid as in this case.
Some reasons: lc() and uc() are not (always) symmetric, \d is
(sometimes) a character set with 200+ different characters.
If you mean [0-9], then you should write [0-9], not \d.
There is a plan to make \d (at last) equivalent to only [0-9] (and \w to
only [0-9A-Za-z_], etc.) in Perl 5.12, but that will break old code, so
a new modifier like /U for non-Unicode semantics might be better.
--
Affijn, Ruud
"Gewoon is een tijger."
------------------------------
Date: 14 Sep 2008 17:27:18 GMT
From: John Bokma <john@castleamber.com>
Subject: Re: simple regex not working
Message-Id: <Xns9B197EB2D1AFFcastleamber@130.133.1.4>
"Dr.Ruud" <rvtol+news@isolution.nl> wrote:
> John Bokma schreef:
>> John:
>
>>> I'm trying to match a string beginning a letter A to R
>>> followed by any letter (from S to Z) or any digit.
>>>
>>> if ($x =~ /([A-Ra-r][S-Zs-z0-9]+)/) {$error=""; return}
>>
>> if ($x =~ /^[A-R][S-Z\d]/i ) {
>>
>> $error = "";
>> return;
>> }
>
> Ignoring the intricacies of /i and \d is not best practice, especially
> when it is so easy to avoid as in this case.
>
> Some reasons: lc() and uc() are not (always) symmetric, \d is
> (sometimes) a character set with 200+ different characters.
>
> If you mean [0-9], then you should write [0-9], not \d.
Depends on your input data, no? Also, what does the OP mean with "any
digit"...
--
John http://johnbokma.com/ - Hacking & Hiking in Mexico
Perl help in exchange for a gift:
http://johnbokma.com/perl/help-in-exchange-for-a-gift.html
------------------------------
Date: Sun, 14 Sep 2008 04:25:18 -0700 (PDT)
From: lnorav@gmail.com
Subject: transfer value from one page to single frame of a second,frameset page
Message-Id: <52d87f80-228e-4a32-997c-f2eb7f561935@w7g2000hsa.googlegroups.com>
I want to pass a value(name) from a 'sign-in'(password) page to
one(result) frame of a second, three-frame frameset page. I did this
with 'action = result file.cgi' in the 'sign-in' file and
$ENV{'REQUEST_METHOD'} in the result file.cgi, but then only the
result frame alone was displayed. Doing the same with 'action=
frameset file.htm' displays all frames, but no value is transferred to
the static html file. This is why I need to write the frameset as a
cgi file. A value transferred to a frameset.cgi file could, I assume,
be used as a global value by the single result frame.
My efforts to write such a frameset, as the example below, were not
successful. Perhaps, someone could steer me right via cgi or via a
better(js) approach?
#!/usr/bin/perl -w
use CGI qw/:standard/;
my $q=new CGI;
use CGI::Carp qw(fatalsToBrowser);
print $q->header(); #or: $q->print("Content-Type: text/html\n
\n");
print $q->start_html(-title=>'PagePass');
print <<endhtml;
<FRAMESET ROWS="50%,*">
<FRAME NAME="frameA" SRC="http://bioinfo.weizmann.ac.il/
safety-bin/x.cgi">
<FRAME NAME="frameB" SRC="http://bioinfo.weizmann.ac.il/
safety-bin/cgi-bin/y.cgi">
</FRAMESET>
endhtml
;
# exit 0;
#malformed header from script. Bad header=<!DOCTYPE html:
------------------------------
Date: Sun, 14 Sep 2008 04:44:49 -0700 (PDT)
From: Bill H <bill@ts1000.us>
Subject: Re: transfer value from one page to single frame of a second,frameset page
Message-Id: <a4d8dc4e-7e76-4de3-a079-42bb1aa8c4dc@m3g2000hsc.googlegroups.com>
On Sep 14, 7:25=A0am, lno...@gmail.com wrote:
> I want to pass a value(name) from a 'sign-in'(password) page to
> one(result) frame of a second, three-frame frameset page. I did this
> with 'action =3D result file.cgi' in the 'sign-in' file and
> $ENV{'REQUEST_METHOD'} in the result file.cgi, but then only the
> result frame alone was displayed. Doing the same with 'action=3D
> frameset file.htm' displays all frames, but no value is transferred to
> the static html file. =A0This is why I need to write the frameset as a
> cgi file. =A0A value transferred to a frameset.cgi file could, I assume,
> be used as a global value by the single result frame.
> =A0My efforts to write such a frameset, as the example below, were not
> successful. Perhaps, someone could steer me right via cgi or via a
> better(js) approach?
>
> #!/usr/bin/perl =A0-w
>
> =A0use CGI qw/:standard/;
> =A0my $q=3Dnew CGI;
> =A0use CGI::Carp qw(fatalsToBrowser);
>
> =A0print $q->header(); =A0 =A0 =A0 =A0#or: $q->print("Content-Type: text/=
html\n
> \n");
> =A0print $q->start_html(-title=3D>'PagePass');
>
> =A0print <<endhtml;
> =A0 =A0 =A0 =A0<FRAMESET ROWS=3D"50%,*">
> =A0 =A0 =A0 =A0 =A0 <FRAME NAME=3D"frameA" SRC=3D"http://bioinfo.weizmann=
.ac.il/
> safety-bin/x.cgi">
> =A0 =A0 =A0 =A0 =A0 <FRAME NAME=3D"frameB" SRC=3D"http://bioinfo.weizmann=
.ac.il/
> safety-bin/cgi-bin/y.cgi">
> =A0 =A0 =A0 =A0</FRAMESET>
> =A0endhtml
> =A0;
> =A0# =A0 =A0 =A0exit 0;
>
> =A0#malformed header from script. Bad header=3D<!DOCTYPE html:
Not really perl, but you need to put a target in your form tag. For
example if you have the form with action=3Dresult file.cgi in frameA and
want the results to show up in frameB, add target=3DframeB in the form
element tag
Bill H
------------------------------
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 V11 Issue 1855
***************************************