[29993] in Perl-Users-Digest
Perl-Users Digest, Issue: 1236 Volume: 11
daemon@ATHENA.MIT.EDU (Perl-Users Digest)
Sun Jan 27 03:09:38 2008
Date: Sun, 27 Jan 2008 00:09:05 -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 Sun, 27 Jan 2008 Volume: 11 Number: 1236
Today's topics:
Re: File::SortedSeek not working xhoster@gmail.com
Re: Get an arbitrary hash key, quickly. xhoster@gmail.com
new CPAN modules on Sun Jan 27 2008 (Randal Schwartz)
Parse transcripts on speaker's name and grab subsequent <totalbadfaith@gmail.com>
Re: Parse transcripts on speaker's name and grab subseq <tadmc@seesig.invalid>
Re: Parse transcripts on speaker's name and grab subseq <nospam-abuse@ilyaz.org>
Re: regular expression negate a word (not character) <nospam-abuse@ilyaz.org>
Smart Debugger (Perl) <karthi.ir@gmail.com>
Re: sprintf rouding error <No_4@dsl.pipex.com>
Taint mode piped open problem <rohit.makasana@gmail.com>
Re: Taint mode piped open problem <noreply@gunnar.cc>
Re: Taint mode piped open problem <rohit.makasana@gmail.com>
Re: Taint mode piped open problem <ben@morrow.me.uk>
Re: Taint mode piped open problem <rohit.makasana@gmail.com>
Digest Administrivia (Last modified: 6 Apr 01) (Perl-Users-Digest Admin)
----------------------------------------------------------------------
Date: 27 Jan 2008 00:53:12 GMT
From: xhoster@gmail.com
Subject: Re: File::SortedSeek not working
Message-Id: <20080126195314.999$c3@newsreader.com>
worker <tzhai2007@gmail.com> wrote:
> >
> > thnx for the explanation.
> > I made the following changes according to your suggestions:
> >
> > $aSimDateMunged = &munge_string($aSimDate);
> > $tell = File::SortedSeek::alphabetic(*FRAW,$aSimDateMunged,
> > \&munge_string);
Where did $aSimDate and *FRAW come from? The point of posting test code
is that we can use it for testing. If you keep changing the variable
names, that kind of defeats the purpose.
> >
> > return ($line =~ m/(^[0-9]+)\/([0-9]+)\/([0-9]+)(,|$)/) ?
> > sprintf "%04d%02d%02d", $3,$1,$2 : undef;
> >
> > my data is in month/day/year.
> >
> > once I tried it, this is what I got as response:
> >
> > Name "main::tell" used only once: possible typo at ztest.pl line 22.
> >
> > Ark, File::SortedSeek got to EOF
> > Failed to find: 'SCALAR(0x354c0)'
Are you taking a reference to a scalar someplace that you aren't showing
us?
> >
> > Help?
>
> Hello?
> could anyone help with this? thx.
When I made the indicated changes to the example you originally provided,
it worked just fine. I don't think you are reliably transferring
code/information back and forth between this forum and your own code, so
there is little more I can do for you.
Xho
--
-------------------- http://NewsReader.Com/ --------------------
The costs of publication of this article were defrayed in part by the
payment of page charges. This article must therefore be hereby marked
advertisement in accordance with 18 U.S.C. Section 1734 solely to indicate
this fact.
------------------------------
Date: 27 Jan 2008 01:05:03 GMT
From: xhoster@gmail.com
Subject: Re: Get an arbitrary hash key, quickly.
Message-Id: <20080126200506.085$hM@newsreader.com>
nolo contendere <simon.chao@fmr.com> wrote:
> On Jan 25, 12:32=A0pm, xhos...@gmail.com wrote:
> =2E..
> >
> > But replicates can still build up to unacceptable levels before the
> > first instance of one ever gets $done{}. =A0So then you need another
> > hash, %queued_but_not_done, to reject duplicate entries at the earliest
> > stage.
>
> From this I infer that you are engaging in parallel processing. Is
> this correct?
I have run into these constructs in parallel processing, but that was not
the immediate case here. I was computing a single-linkage hierarchical
clustering tree from a distance matrix that is way too large for the COTS
software I have access to handle. I've also ran into in certain traversals
of extremely large graphs.
Xho
--
-------------------- http://NewsReader.Com/ --------------------
The costs of publication of this article were defrayed in part by the
payment of page charges. This article must therefore be hereby marked
advertisement in accordance with 18 U.S.C. Section 1734 solely to indicate
this fact.
------------------------------
Date: Sun, 27 Jan 2008 05:42:17 GMT
From: merlyn@stonehenge.com (Randal Schwartz)
Subject: new CPAN modules on Sun Jan 27 2008
Message-Id: <JvAFuH.1uKp@zorch.sf-bay.org>
The following modules have recently been added to or updated in the
Comprehensive Perl Archive Network (CPAN). You can install them using the
instructions in the 'perlmodinstall' page included with your Perl
distribution.
Archer-0.04
http://search.cpan.org/~tokuhirom/Archer-0.04/
yet another deployment tool
----
BSD-Getfsent-0.16
http://search.cpan.org/~schubiger/BSD-Getfsent-0.16/
Get file system descriptor file entry
----
Catalyst-Plugin-Cache-0.05
http://search.cpan.org/~nuffin/Catalyst-Plugin-Cache-0.05/
Flexible caching support for Catalyst.
----
DBD-Pg-2.0.0_7
http://search.cpan.org/~turnstep/DBD-Pg-2.0.0_7/
PostgreSQL database driver for the DBI module
----
Geo-LocaPoint-0.0.1
http://search.cpan.org/~kokogiko/Geo-LocaPoint-0.0.1/
Simple encoder/decoder of LocaPoint
----
HTML-Entities-ConvertPictogramMobileJp-0.04
http://search.cpan.org/~tokuhirom/HTML-Entities-ConvertPictogramMobileJp-0.04/
convert pictogram entities
----
HTML-Entities-ConvertPictogramMobileJp-0.05
http://search.cpan.org/~tokuhirom/HTML-Entities-ConvertPictogramMobileJp-0.05/
convert pictogram entities
----
HTML-MobileJp-0.04
http://search.cpan.org/~tokuhirom/HTML-MobileJp-0.04/
generate mobile-jp html tags
----
HTTP-MobileAgent-Plugin-Charset-0.01
http://search.cpan.org/~tokuhirom/HTTP-MobileAgent-Plugin-Charset-0.01/
Encode::JP::Mobile friendly
----
Heap-Simple-Perl-0.12
http://search.cpan.org/~thospel/Heap-Simple-Perl-0.12/
A pure perl implementation of the Heap::Simple interface
----
Language-MuldisD-0.18.0
http://search.cpan.org/~duncand/Language-MuldisD-0.18.0/
Formal spec of Muldis D relational DBMS lang
----
Locale-Maketext-TieHash-L10N-0.06
http://search.cpan.org/~steffenw/Locale-Maketext-TieHash-L10N-0.06/
Tying language handle to a hash
----
Moose-0.36
http://search.cpan.org/~stevan/Moose-0.36/
A postmodern object system for Perl 5
----
MooseX-Singleton-0.04
http://search.cpan.org/~rjbs/MooseX-Singleton-0.04/
turn your Moose class into a singleton
----
Moxy-0.23
http://search.cpan.org/~tokuhirom/Moxy-0.23/
Mobile web development proxy
----
Net-CIDR-MobileJP-0.11
http://search.cpan.org/~tokuhirom/Net-CIDR-MobileJP-0.11/
mobile ip address in Japan
----
Net-Oping-1.00
http://search.cpan.org/~octo/Net-Oping-1.00/
ICMP latency measurement module using the oping library.
----
Proc-ProcessTable-0.42
http://search.cpan.org/~durist/Proc-ProcessTable-0.42/
Perl extension to access the unix process table
----
Sledge-Plugin-PictogramEntities-0.02
http://search.cpan.org/~tokuhirom/Sledge-Plugin-PictogramEntities-0.02/
Pictogram entities filter
----
Tk-Bounded-1.0.2
http://search.cpan.org/~dmpetit/Tk-Bounded-1.0.2/
Base class for widgets derived and bound binded from others
----
Tk-Wizard-2.136
http://search.cpan.org/~lgoddard/Tk-Wizard-2.136/
GUI for step-by-step interactive logical process
----
Tk-Wizard-Sizer-2.223
http://search.cpan.org/~mthurn/Tk-Wizard-Sizer-2.223/
Interactively determine the best size for your Wizard
----
Video-Xine-0.15
http://search.cpan.org/~stephen/Video-Xine-0.15/
Perl interface to libxine
----
WWW-CPAN-0.005
http://search.cpan.org/~ferreira/WWW-CPAN-0.005/
CPAN as a web service
----
WWW-Myspace-0.75
http://search.cpan.org/~grantg/WWW-Myspace-0.75/
Access MySpace.com profile information from Perl
If you're an author of one of these modules, please submit a detailed
announcement to comp.lang.perl.announce, and we'll pass it along.
This message was generated by a Perl program described in my Linux
Magazine column, which can be found on-line (along with more than
200 other freely available past column articles) at
http://www.stonehenge.com/merlyn/LinuxMag/col82.html
print "Just another Perl hacker," # the original
--
Randal L. Schwartz - Stonehenge Consulting Services, Inc. - +1 503 777 0095
<merlyn@stonehenge.com> <URL:http://www.stonehenge.com/merlyn/>
Perl/Unix/security consulting, Technical writing, Comedy, etc. etc.
See PerlTraining.Stonehenge.com for onsite and open-enrollment Perl training!
------------------------------
Date: Sat, 26 Jan 2008 14:26:26 -0800 (PST)
From: perchance <totalbadfaith@gmail.com>
Subject: Parse transcripts on speaker's name and grab subsequent paragraphs
Message-Id: <249e7601-0276-4e93-8d37-f9d4fb6963f5@s19g2000prg.googlegroups.com>
Here's the sort of text I'm looking at that's driving me nuts.
####
JOE: Hello, Jane.
How are you?
Has it been a good day?
JANE: Hey, Joe.
It's been good for me.
JOE: Great.
####
I'd like to parse the transcripts into an ordered hash that would have
[speaker => name,
statement => concatenation of multiple lines of text spoken by that
person
order => For instance, Joe's first statement is 1, Jane's 2, et
cetera.
]
I've tried stepping through the text file with a foreach $line, or as
a total string, with split()'s and regexes built around /[A-Z]+:/ but
I can't get it line up. I fear the regex is beyond me. Can anyone
help?
Thanks.
------------------------------
Date: Sat, 26 Jan 2008 18:28:31 -0600
From: Tad J McClellan <tadmc@seesig.invalid>
Subject: Re: Parse transcripts on speaker's name and grab subsequent paragraphs
Message-Id: <slrnfpnk1f.pvm.tadmc@tadmc30.sbcglobal.net>
perchance <totalbadfaith@gmail.com> wrote:
> I'd like to parse the transcripts into an ordered hash that would have
There is no such thing as an "ordered hash"...
> [speaker => name,
> statement => concatenation of multiple lines of text spoken by that
> person
> order => For instance, Joe's first statement is 1, Jane's 2, et
> cetera.
> ]
>
> I've tried stepping through the text file with a foreach $line, or as
> a total string, with split()'s and regexes built around /[A-Z]+:/ but
BILLY BOB: But what about matching my name Perchance?
> I can't get it line up. I fear the regex is beyond me.
The regex is of "Hello World" complexity, it must be something
else that is beyond you.
:-)
> Can anyone
> help?
You simply need a better data structure.
If you want ordering, then you want an array.
If you want to save several attributes in each array element,
then you want a hash.
If you want ordering and named attributes, you want a LoH.
(List of Hashes, really an array containing hash references.)
See:
perldoc perlreftut
etc...
--------------------------------
#!/usr/bin/perl
use warnings;
use strict;
my($speaker, $stmt);
my @stmts;
while ( <DATA> ) {
next if /^\s+$/;
if ( /^([A-Z ]+):\s+(.*)/ ) { # new speaker
push @stmts, { speaker => $speaker, stmt => $stmt} if $stmt;
$speaker = $1;
$stmt = $2;
}
else { # more dialog
chomp;
$stmt .= " $_";
}
}
push @stmts, { speaker => $speaker, stmt => $stmt};
foreach ( 0 .. $#stmts ) { # Hash Slice to get attributes out
my($speaker, $stmt) = @{ $stmts[$_] }{ qw/ speaker stmt / };
print "$_: $speaker\n $stmt\n\n";
}
__DATA__
JOE: Hello, Jane.
How are you?
Has it been a good day?
JANE: Hey, Joe.
It's been good for me.
JOE: Great.
--------------------------------
--
Tad McClellan
email: perl -le "print scalar reverse qq/moc.noitatibaher\100cmdat/"
------------------------------
Date: Sun, 27 Jan 2008 02:31:11 +0000 (UTC)
From: Ilya Zakharevich <nospam-abuse@ilyaz.org>
Subject: Re: Parse transcripts on speaker's name and grab subsequent paragraphs
Message-Id: <fngqdf$1p0a$1@agate.berkeley.edu>
[A complimentary Cc of this posting was sent to
Tad J McClellan
<tadmc@seesig.invalid>], who wrote in article <slrnfpnk1f.pvm.tadmc@tadmc30.sbcglobal.net>:
> my($speaker, $stmt);
> my @stmts;
> while ( <DATA> ) {
> next if /^\s+$/;
Do not see a switch to a paragraph mode.
>
> if ( /^([A-Z ]+):\s+(.*)/ ) { # new speaker
> push @stmts, { speaker => $speaker, stmt => $stmt} if $stmt;
> $speaker = $1;
> $stmt = $2;
> }
> else { # more dialog
> chomp;
> $stmt .= " $_";
Chomp()ing looks suspicious... I would remove NL from each paragraph,
and would separate same-speaker paragraphs by a double-NL (if this is
what the OP wanted).
Hope this helps,
Ilya
------------------------------
Date: Sat, 26 Jan 2008 21:39:02 +0000 (UTC)
From: Ilya Zakharevich <nospam-abuse@ilyaz.org>
Subject: Re: regular expression negate a word (not character)
Message-Id: <fng99m$1jfg$1@agate.berkeley.edu>
[A complimentary Cc of this posting was sent to
Summercool
<Summercoolness@gmail.com>], who wrote in article <27249159-9ff3-4887-acb7-99cf0d2582a8@n20g2000hsh.googlegroups.com>:
> so for example, it will grep for
>
> winter tire
> tire
> retire
> tired
>
> but will not grep for
>
> snow tire
> snow tire
> some snowtires
This does not describe the problem completely. What about
thisnow tire
snow; tire
etc? Anyway, one of the obvious modifications of
(^ | \b(?!snow) \w+ ) \W* tire
should work.
Hope this helps,
Ilya
------------------------------
Date: Sat, 26 Jan 2008 21:45:16 GMT
From: kraman <karthi.ir@gmail.com>
Subject: Smart Debugger (Perl)
Message-Id: <Jv9trG.18qA@zorch.sf-bay.org>
Hi All,
Please find the smart debugger for Perl. it is an enchanced version
of perl's default debugger
with lots of smart features.
http://develsdb.googlecode.com/svn/trunk/perl/
http://develsdb.googlecode.com/svn/wiki/SmartDebuggerPerl.wiki
CPAN: http://search.cpan.org/~kraman/Devel-sdb-0.01/sdb.pm
SCREENCAST: http://blip.tv/file/get/Kraman-DevelsdbSmartDebugger804.swf
hope you find this useful.
Regards,
Karthik
------------------------------
Date: Sat, 26 Jan 2008 22:19:23 +0000
From: Big and Blue <No_4@dsl.pipex.com>
Subject: Re: sprintf rouding error
Message-Id: <lPmdndpQJst2LAbanZ2dneKdnZydnZ2d@pipex.net>
Gerry Ford wrote:
>
> I never thought of this type of error as an answer to the subset problem
But this is only a user error, not a program error. So which subset do
you refer to - the subset of programmers who expect floating point numbers
to have infinite precision, or those who don't know the difference between
rounding and truncation?
--
Just because I've written it doesn't mean that
either you or I have to believe it.
------------------------------
Date: Sat, 26 Jan 2008 14:07:34 -0800 (PST)
From: Rohit <rohit.makasana@gmail.com>
Subject: Taint mode piped open problem
Message-Id: <2b302d7a-7a7b-47ec-9b25-71b3f474f2b0@d70g2000hsb.googlegroups.com>
Hello All,
I am writing perl script with taint mode. In which I have to parse PS
command output using command line argument process ID. The problem is
when I store this process id in any variable, by using this variable I
am getting error.
$processID = $ARGV[0];
open(PSDATA, "/bin/ps -wwwp $processID |");
while (<PSDATA>) {
print scalar <PSDATA>;
}
close PSDATA;
I am getting this taint checking error -> "Insecure dependency in
piped open while running with -T switch at GetWidget.pl line 24."
If I replace $processID to any process id like 250, it works fine.
open(PSDATA, "/bin/ps -wwwp 250 |");
I will appreciate any solution for this problem.
Thanks,
Rohit
------------------------------
Date: Sun, 27 Jan 2008 00:13:04 +0100
From: Gunnar Hjalmarsson <noreply@gunnar.cc>
Subject: Re: Taint mode piped open problem
Message-Id: <601t47F1nfkerU1@mid.individual.net>
Rohit wrote:
> I am writing perl script with taint mode. In which I have to parse PS
> command output using command line argument process ID. The problem is
> when I store this process id in any variable, by using this variable I
> am getting error.
>
> $processID = $ARGV[0];
>
> open(PSDATA, "/bin/ps -wwwp $processID |");
> while (<PSDATA>) {
> print scalar <PSDATA>;
> }
> close PSDATA;
>
> I am getting this taint checking error -> "Insecure dependency in
> piped open while running with -T switch at GetWidget.pl line 24."
>
> If I replace $processID to any process id like 250, it works fine.
You need to untaint $processID.
($processID) = $processID =~ /^(\d+)$/;
Please read more about the topic in "perldoc perlsec".
--
Gunnar Hjalmarsson
Email: http://www.gunnar.cc/cgi-bin/contact.pl
------------------------------
Date: Sat, 26 Jan 2008 15:24:30 -0800 (PST)
From: Rohit <rohit.makasana@gmail.com>
Subject: Re: Taint mode piped open problem
Message-Id: <465427d8-18a3-46db-b6ae-fa1f4fc6015e@c23g2000hsa.googlegroups.com>
Thank you very much Gunnar! It works fine now.
And thanks for routing me to proper doc.
On Jan 26, 3:13 pm, Gunnar Hjalmarsson <nore...@gunnar.cc> wrote:
> Rohit wrote:
> > I am writing perl script with taint mode. In which I have to parse PS
> > command output using command line argument process ID. The problem is
> > when I store this process id in any variable, by using this variable I
> > am getting error.
>
> > $processID = $ARGV[0];
>
> > open(PSDATA, "/bin/ps -wwwp $processID |");
> > while (<PSDATA>) {
> > print scalar <PSDATA>;
> > }
> > close PSDATA;
>
> > I am getting this taint checking error -> "Insecure dependency in
> > piped open while running with -T switch at GetWidget.pl line 24."
>
> > If I replace $processID to any process id like 250, it works fine.
>
> You need to untaint $processID.
>
> ($processID) = $processID =~ /^(\d+)$/;
>
> Please read more about the topic in "perldoc perlsec".
>
> --
> Gunnar Hjalmarsson
> Email:http://www.gunnar.cc/cgi-bin/contact.pl
------------------------------
Date: Sat, 26 Jan 2008 23:26:58 +0000
From: Ben Morrow <ben@morrow.me.uk>
Subject: Re: Taint mode piped open problem
Message-Id: <27ss65-abs.ln1@osiris.mauzo.dyndns.org>
Quoth Rohit <rohit.makasana@gmail.com>:
>
> I am writing perl script with taint mode. In which I have to parse PS
> command output using command line argument process ID. The problem is
> when I store this process id in any variable, by using this variable I
> am getting error.
>
> $processID = $ARGV[0];
Do you have
use warnings;
use strict;
at the top of your script? This probably needs to be
my $processID = $ARGV[0];
> open(PSDATA, "/bin/ps -wwwp $processID |");
Check the return value of open.
Use three-or-more arg open, *especially* in scripts where security is an
issue.
Use lexical filehandles.
open(my $PSDATA, '-|', '/bin/ps', '-wwwp', $processID)
or die "can't fork ps: $!";
> while (<PSDATA>) {
> print scalar <PSDATA>;
> }
> close PSDATA;
>
> I am getting this taint checking error -> "Insecure dependency in
> piped open while running with -T switch at GetWidget.pl line 24."
@ARGV is tainted, since it comes from outside your program. This means
$processID is tainted as well, so you can't pass it directly to ps
without checking it first. With your script as it stood (1-arg open),
someone could have passed an argument of '1; rm -rf /' and caused
serious trouble. With multi-arg open this is not possible, but for all
Perl knows there could be other problems with passing arbitrary data to
ps.
There are two possible solutions: preferable would be to use a module
like Proc::ProcessTable rather than parsing the output of ps(1);
alternatively, you need to untaint $ARGV[0] by extracting data from a
pattern match. Something like
my ($processID) = ($ARGV[0] =~ /^(\d+)$/)
or die "invalid pid: $ARGV[0]";
Read perldoc perlsec, and note that you will also (if you aren't
already) need to explicitly set $ENV{PATH} before taint mode will let
you run anything at all.
> If I replace $processID to any process id like 250, it works fine.
>
> open(PSDATA, "/bin/ps -wwwp 250 |");
This is because a literal constant like '250' is not from outside your
program, so it isn't tainted. (I guess this means you are already
setting $PATH.)
Ben
------------------------------
Date: Sat, 26 Jan 2008 17:34:46 -0800 (PST)
From: Rohit <rohit.makasana@gmail.com>
Subject: Re: Taint mode piped open problem
Message-Id: <dffee7e0-57e7-4d30-b4f6-9bcc79256f96@n20g2000hsh.googlegroups.com>
Hi Ben,
Thanks for this great lesson. Using this I will be able to prevent
other problems too in future.
Again thanks a lot!
~Rohit
On Jan 26, 3:26 pm, Ben Morrow <b...@morrow.me.uk> wrote:
> Quoth Rohit <rohit.makas...@gmail.com>:
>
>
>
> > I am writing perl script with taint mode. In which I have to parse PS
> > command output using command line argument process ID. The problem is
> > when I store this process id in any variable, by using this variable I
> > am getting error.
>
> > $processID = $ARGV[0];
>
> Do you have
>
> use warnings;
> use strict;
>
> at the top of your script? This probably needs to be
>
> my $processID = $ARGV[0];
>
> > open(PSDATA, "/bin/ps -wwwp $processID |");
>
> Check the return value of open.
> Use three-or-more arg open, *especially* in scripts where security is an
> issue.
> Use lexical filehandles.
>
> open(my $PSDATA, '-|', '/bin/ps', '-wwwp', $processID)
> or die "can't fork ps: $!";
>
> > while (<PSDATA>) {
> > print scalar <PSDATA>;
> > }
> > close PSDATA;
>
> > I am getting this taint checking error -> "Insecure dependency in
> > piped open while running with -T switch at GetWidget.pl line 24."
>
> @ARGV is tainted, since it comes from outside your program. This means
> $processID is tainted as well, so you can't pass it directly to ps
> without checking it first. With your script as it stood (1-arg open),
> someone could have passed an argument of '1; rm -rf /' and caused
> serious trouble. With multi-arg open this is not possible, but for all
> Perl knows there could be other problems with passing arbitrary data to
> ps.
>
> There are two possible solutions: preferable would be to use a module
> like Proc::ProcessTable rather than parsing the output of ps(1);
> alternatively, you need to untaint $ARGV[0] by extracting data from a
> pattern match. Something like
>
> my ($processID) = ($ARGV[0] =~ /^(\d+)$/)
> or die "invalid pid: $ARGV[0]";
>
> Read perldoc perlsec, and note that you will also (if you aren't
> already) need to explicitly set $ENV{PATH} before taint mode will let
> you run anything at all.
>
> > If I replace $processID to any process id like 250, it works fine.
>
> > open(PSDATA, "/bin/ps -wwwp 250 |");
>
> This is because a literal constant like '250' is not from outside your
> program, so it isn't tainted. (I guess this means you are already
> setting $PATH.)
>
> Ben
------------------------------
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 1236
***************************************