[29400] in Perl-Users-Digest
Perl-Users Digest, Issue: 644 Volume: 11
daemon@ATHENA.MIT.EDU (Perl-Users Digest)
Wed Jul 11 16:09:44 2007
Date: Wed, 11 Jul 2007 13:09:06 -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 Wed, 11 Jul 2007 Volume: 11 Number: 644
Today's topics:
Capturing a Repeated Group <perrog@gmail.com>
Re: Capturing a Repeated Group <mritty@gmail.com>
Re: croak/confess from within File::Find anno4000@radom.zrz.tu-berlin.de
Difficulty manipulating hashes <steamaccount2@gmail.com>
File test question (exists and is readable) <sigzero@gmail.com>
Re: File test question (exists and is readable) <mritty@gmail.com>
Re: File test question (exists and is readable) <jgibson@mail.arc.nasa.gov>
Re: File test question (exists and is readable) <hjp-usenet2@hjp.at>
handling stale lock files <yan@NsOeSiPnAeMr.com>
Re: handling stale lock files anno4000@radom.zrz.tu-berlin.de
Re: How to turn off taint checking in cgi anno4000@radom.zrz.tu-berlin.de
SNMP::Util - set fails in script. <jcottingim@yahoo.com>
Re: sysread vs read? <socyl@987jk.com.invalid>
Re: sysread vs read? xhoster@gmail.com
Win32::SqlServer 2.003 releaed <esquel@sommarskog.se>
Digest Administrivia (Last modified: 6 Apr 01) (Perl-Users-Digest Admin)
----------------------------------------------------------------------
Date: Wed, 11 Jul 2007 12:56:36 -0700
From: "perrog@gmail.com" <perrog@gmail.com>
Subject: Capturing a Repeated Group
Message-Id: <1184183796.254222.198140@g4g2000hsf.googlegroups.com>
Hi!
I'm new to perl/regular expressions but experience programmer. I'm
trying to match a formatted number 123,456,789 and convert it into an
integer. Thought the following would do, but it don't.
$_ = "1,234,567,890";
my @parts;
(@parts = /(\d{1,3})(?:,(\d{3}))*/g) && do {
my $number = 0;
$number = $number * 1000 + $_ foreach (@parts);
print "$number\n";
};
The problem is that this expression doesn't save repeated groups, it
discard captured repeated groups except the last repeat (so it works
for "123,456" numbers.) If I instead match the below it works, but I
can't understand the logic behind it (if there is any logic?)
(@parts = /(\d{1,3})(?:,(\d{3})+)/g) && do { # not really equivalent
to the above, but almost
my $number = 0;
$number = $number * 1000 + $_ foreach (@parts);
print "$number\n";
};
My second question is, if I can capture repeated groups, how do I know
how many repeats there were. Is there any built-in/special variable
other than $1, $2, etc. @+, @- or the returned array that I'm not
aware of?
Or can't I do it with RE's? Is this an duty for RecDescent? Life would
be more compact with regular expressions. :-)
my $number_parser = Parse::RecDescent->new(q(
parse: digits
digits: /\d{1,3}/ <skip:''> digits_part(s?)
{
my $number = $item[1];
$number = $number * 1000 + $_ foreach (@{$item[3]});
$number;
}
digits_part: "," <skip:''> /\d\d\d/
);
$number_parser->parse("1,234,567,890"); # returns 1234567890
I've searched around, including text books, but could not find any
details how to capture repeated groups (if it now is possible.)
Thanks for any hints.
Regards,
Roggan
------------------------------
Date: Wed, 11 Jul 2007 13:08:28 -0700
From: Paul Lalli <mritty@gmail.com>
Subject: Re: Capturing a Repeated Group
Message-Id: <1184184508.531283.224250@g4g2000hsf.googlegroups.com>
On Jul 11, 3:56 pm, "per...@gmail.com" <per...@gmail.com> wrote:
> I'm new to perl/regular expressions but experience programmer. I'm
> trying to match a formatted number 123,456,789 and convert it into an
> integer.
I have a dumb question. Why aren't you just doing:
$_ = "1,234,567,890";
s/,//g;
or
$_ = "1,234,567,890";
tr/,//d;
?
As for your generic question of "how do I capture individual instances
of repeated captured submatches", I'm afraid I don't know the
answer...
Paul Lalli
------------------------------
Date: 11 Jul 2007 13:51:23 GMT
From: anno4000@radom.zrz.tu-berlin.de
Subject: Re: croak/confess from within File::Find
Message-Id: <5fk5irF3d8v0aU1@mid.dfncis.de>
Paul Lalli <mritty@gmail.com> wrote in comp.lang.perl.misc:
> On Jul 11, 5:22 am, anno4...@radom.zrz.tu-berlin.de wrote:
> > Paul Lalli <mri...@gmail.com> wrote in comp.lang.perl.misc:
> >
> > > My goal is to be able to use croak()
> > > from within a subroutine that is called by the &wanted subroutine
> > > which is passed to File::Find::find(). I want the error message
> > > printed as a result of this croak() to list the line number of the
> > > call to the final subroutine.
> >
> > Add this:
> >
> > push our @CARP_NOT, 'File::Find';
> >
>
> > Carp has a hard time assigning an error location in callback situations.
> > It climbs the stack, essentially watching for a change in the calling
> > package. When called from a callback it meets that change earlier than
> > intended (from your main to File::Find). The variable @CARP_NOT is
> > checked and a package change is ignored if one of the packages is on
> > the other's @CARP_NOT.
>
> Anno,
>
> Thank you for the information. Annoyingly, it seems that if all the
> packages are "trusted" (as per Carp's docs), then croak behaves
> exactly like confess:
>
> #!/opt2/perl/bin/perl
> use strict;
> use warnings;
> use Carp;
> use File::Find;
>
> sub err {
> croak ("You did something bad!"); #line 8
> }
>
> sub wanted {
> err(); #line 12
> }
> push our @CARP_NOT, 'File::Find';
> find(\&wanted, '.'); #line 15
> __END__
>
>
> $ ./ff_carp.pl
> You did something bad! at ./ff_carp.pl line 8
> main::err() called at ./ff_carp.pl line 12
> main::wanted() called at /opt2/Perl5_8_4/lib/perl5/5.8.4/File/
> Find.pm line 810
> File::Find::_find_dir('HASH(0x13e8d4)', ., 2) called at /opt2/
> Perl5_8_4/lib/perl5/5.8.4/File/Find.pm line 690
> File::Find::_find_opt('HASH(0x13e8d4)', .) called at /opt2/
> Perl5_8_4/lib/perl5/5.8.4/File/Find.pm line 1193
> File::Find::find('CODE(0x15e498)', .) called at ./ff_carp.pl
> line 15
>
>
> I suppose that's better than nothing. It just bugs me that there
> doesn't seem to be a way to just have it print where the subroutine
> was called from. I suppose I could fiddle with caller() to get
> exactly what I want, but doesn't it seem like carp/croak should be
> able to do this on its own?
You can have that if you compile the wanted() function in a package
of its own:
{
package CarpCatcher;
use Carp;
sub wanted {
err(); #line 12
}
sub err {
croak ("You did something bad!");
}
push our @CARP_NOT, 'File::Find';
}
use File::Find;
find(\&CarpCatcher::wanted, '.');
__END__
Anno
------------------------------
Date: Wed, 11 Jul 2007 09:35:01 -0700
From: limitz <steamaccount2@gmail.com>
Subject: Difficulty manipulating hashes
Message-Id: <1184171701.995517.219580@m3g2000hsh.googlegroups.com>
Here is my script, followed by my question at the end:
print "\nThere are a total of 18990 bases in the entire sequence\n";
print "\nWhat is the starting base number? Keep in mind that Perl
begins the tally";
print "\nwith 0. So if you wanted to start from base 30, input in
29\n";
#Here we can define where we want the sequence to begin and end
print "Input Starting Number:\n";
$beginning_of_sequence = <STDIN>;
print "Input Ending Base Number:\n";
$end_of_sequence = <STDIN>;
$length_of_sequence = $end_of_sequence-$beginning_of_sequence+1;
%dinucleotidepair = (
AT => 0,
AC => 0,
AG => 0,
AA => 0,
TA => 0,
TC => 0,
TG => 0,
TT => 0,
CA => 0,
CT => 0,
CG => 0,
CC => 0,
GA => 0,
GT => 0,
GC => 0,
GG => 0,
);
#$AC = 'AC';
#$ACcountss = 0;
#for my $i (0 .. $length_of_sequence-1) {
# my $dinuc = substr($fastasequence, $i, 2);
# if ($dinuc =~ $AC) {
# $ACcountss++;
# }
#}
for my $i (0 .. $length_of_sequence-1) {
foreach (keys %dinucleotidepair) {
$dinucleotidepair{$_}++ if substr($fastasequence, $i,
2) =~ /$_/;
}
}
while ( my($keys,$values) = each(%dinucleotidepair) ) {
print "$keys $values\n";
}
#print "The Fasta sequence segment has $ACcountss AC's in
$beginning_of_sequence to $end_of_sequence",
#printf "for a relative frequency of %f\n", $ACcountss/
$length_of_sequence;
My new problem is this. I have to calculate the relative frequencies
for everything. So, what that means, is that if one of the keys in my
hash has an occurence, I have to divide that by $length_of_sequence
to
find the relative frequency. Then, that relative frequency will be
used in another Perl script.
My question is this:
How do I manipulate individual elements in a hash
given the value of the key is not zero?
For example. In $fastasequence, the first 30 nucleotide bases contain
4 occurences of the variable "AC" yet no occurences of the base
combination "TG".
Thus, the variable frequency of AC is 0.133.
Secondly, how do I save 0.133 as a variable that can be carried over
and used by another
Perl script for calcuation purposes?
Thanks!
~Frank
------------------------------
Date: Wed, 11 Jul 2007 08:26:08 -0700
From: Robert Hicks <sigzero@gmail.com>
Subject: File test question (exists and is readable)
Message-Id: <1184167568.599468.41000@k79g2000hse.googlegroups.com>
Does a -r infer a -e?
If I want to make sure the file exists and is readable can I just do:
if ( -r $filename ) { do something }
Or do I have to do:
if ( -e $filename && -r $filename ) { do something }
Robert
------------------------------
Date: Wed, 11 Jul 2007 08:43:41 -0700
From: Paul Lalli <mritty@gmail.com>
Subject: Re: File test question (exists and is readable)
Message-Id: <1184168621.900771.186070@n2g2000hse.googlegroups.com>
On Jul 11, 11:26 am, Robert Hicks <sigz...@gmail.com> wrote:
> Does a -r infer a -e?
>
> If I want to make sure the file exists and is readable can I just do:
>
> if ( -r $filename ) { do something }
I would think so, though I can't say for 100% certain, as I don't have
that intimate knowledge of how Unix filesystems work.
> Or do I have to do:
>
> if ( -e $filename && -r $filename ) { do something }
Well I know for sure you shouldn't do that. That's a race condition.
You're running two separate stat calls on $filename. It is
conceivable (though admittedly unlikely) that the file gets deleted
somewhere between the two checks, for example.
Rather, if you want to do two file test operators on the same file,
use the special _ filehandle:
if (-e $filename && -r _ ) { do_something(); }
Paul Lalli
------------------------------
Date: Wed, 11 Jul 2007 10:08:13 -0700
From: Jim Gibson <jgibson@mail.arc.nasa.gov>
Subject: Re: File test question (exists and is readable)
Message-Id: <110720071008137481%jgibson@mail.arc.nasa.gov>
In article <1184167568.599468.41000@k79g2000hse.googlegroups.com>,
Robert Hicks <sigzero@gmail.com> wrote:
> Does a -r infer a -e?
>
> If I want to make sure the file exists and is readable can I just do:
>
> if ( -r $filename ) { do something }
>
> Or do I have to do:
>
> if ( -e $filename && -r $filename ) { do something }
It is easy enough to test for a specific platform...
jgibson 37% rm xxx
jgibson 38% perl -e '$x="xxx";print "$x exists\n" if -e $x;print "$x is
readable\n" if -r $x;'
jgibson 39% touch xxx
jgibson 40% perl -e '$x="xxx";print "$x exists\n" if -e $x;print "$x is
readable\n" if -r $x;'
xxx exists
xxx is readable
jgibson 41% chmod 0 xxx
jgibson 42% perl -e '$x="xxx";print "$x exists\n" if -e $x;print "$x is
readable\n" if -r $x;'
xxx exists
...but maybe other platforms differ. However, it is hard to imagine a
file that doesn't exist being readable.
How about a soft link to complicate things...
jgibson 43% rm xxx
override --------- gibson/staff for xxx? y
jgibson 44% ln -s yyy xxx
jgibson 45% perl -e '$x="xxx";print "$x exists\n" if -e $x;print "$x is
readable\n" if -r $x;'
jgibson 46% ls -l xxx
lrwxrwxr-x 1 gibson staff 3 Jul 11 10:05 xxx@ -> yyy
... but I guess these are more operating system specific issues than
Perl ones.
Posted Via Usenet.com Premium Usenet Newsgroup Services
----------------------------------------------------------
** SPEED ** RETENTION ** COMPLETION ** ANONYMITY **
----------------------------------------------------------
http://www.usenet.com
------------------------------
Date: Wed, 11 Jul 2007 19:23:34 +0200
From: "Peter J. Holzer" <hjp-usenet2@hjp.at>
Subject: Re: File test question (exists and is readable)
Message-Id: <slrnf9a4gm.tvh.hjp-usenet2@zeno.hjp.at>
On 2007-07-11 15:43, Paul Lalli <mritty@gmail.com> wrote:
> On Jul 11, 11:26 am, Robert Hicks <sigz...@gmail.com> wrote:
>> Does a -r infer a -e?
>>
>> If I want to make sure the file exists and is readable can I just do:
>>
>> if ( -r $filename ) { do something }
>
> I would think so, though I can't say for 100% certain, as I don't have
> that intimate knowledge of how Unix filesystems work.
The docs are silent on what -e exactly tests, but I would expect
something like "stat doesn't fail". So -r implies -e. And even if that's
not the case I cannot think on a useful scenario where you would want to
distinguish between "-e && -r" and "-r" alone.
>> Or do I have to do:
>>
>> if ( -e $filename && -r $filename ) { do something }
>
> Well I know for sure you shouldn't do that. That's a race condition.
> You're running two separate stat calls on $filename. It is
> conceivable (though admittedly unlikely) that the file gets deleted
> somewhere between the two checks, for example.
That doesn't matter much: If the file has been deleted it isn't readable
any more, so the test will fail. However it is still possible that the
file is deleted after the -r and before "do something" actually does
something with the file.
> Rather, if you want to do two file test operators on the same file,
> use the special _ filehandle:
>
> if (-e $filename && -r _ ) { do_something(); }
That's a bit more performant, but it doesn't fix the race condition. On
the contrary it makes it worse.
Some race conditions can be avoided by opening the file first and then
stating the filehandle. But it really depends on what you are trying to
do.
hp
--
_ | Peter J. Holzer | I know I'd be respectful of a pirate
|_|_) | Sysadmin WSR | with an emu on his shoulder.
| | | hjp@hjp.at |
__/ | http://www.hjp.at/ | -- Sam in "Freefall"
------------------------------
Date: Wed, 11 Jul 2007 10:28:16 -0700
From: CptDondo <yan@NsOeSiPnAeMr.com>
Subject: handling stale lock files
Message-Id: <139a4ph17rdeie1@corp.supernews.com>
OK, I have to admit that I am completely clueless when it comes to perl.
I have the book, I just can't get the language through my thick head....
That being said, I am trying to patch some existing perl code with
somethign that should be pretty simple:
Add a stale lock file check.
Right now the code reads:
if (0 == is_valid_local_abs_path($lockfile)) {
[ log some stuff ]
exit(1);
}
I want to modify that to say:
If the PID in the lockfile is running
exit(1)
else remove stale lock file
How do I go about doing that? Could some kind soul point me to some
examples or someplace I can crib some code?
Thanks,
--Yan
------------------------------
Date: 11 Jul 2007 19:49:58 GMT
From: anno4000@radom.zrz.tu-berlin.de
Subject: Re: handling stale lock files
Message-Id: <5fkqj6F3d8u9dU1@mid.dfncis.de>
CptDondo <yan@NsOeSiPnAeMr.com> wrote in comp.lang.perl.misc:
> OK, I have to admit that I am completely clueless when it comes to perl.
> I have the book, I just can't get the language through my thick head....
>
> That being said, I am trying to patch some existing perl code with
> somethign that should be pretty simple:
>
> Add a stale lock file check.
>
> Right now the code reads:
>
> if (0 == is_valid_local_abs_path($lockfile)) {
> [ log some stuff ]
> exit(1);
> }
>
> I want to modify that to say:
>
> If the PID in the lockfile is running
> exit(1)
> else remove stale lock file
If the process $pid is yours (or you are root), you can check its
existence with
if ( kill 0, $pid ) {
# process exists
}
That does not guarantee that it is still the same process, the pid
in a file would survive a reboot and could belong to something
else now.
You'd be better off using real file locking for exclusion (see
perldoc -f flock). That avoids all insecurities involved in
using the file system for the purpose. In particular, there
are no stale locks.
Anno
------------------------------
Date: 11 Jul 2007 14:07:57 GMT
From: anno4000@radom.zrz.tu-berlin.de
Subject: Re: How to turn off taint checking in cgi
Message-Id: <5fk6htF3ctn0mU1@mid.dfncis.de>
Lars Eighner <usenet@larseighner.com> wrote in comp.lang.perl.misc:
> Well, apparently it is an apache problem -- or at least I have an
> apache problem. I cannot get suexec to work on 2.0.x; and nothing
> containing backticks, system, etc. works. Similar things also do not
> work in sh scripts (although of course everything runs fine from the
> commandline). Perl (when taint is given sneering lip service) and sh
> scripts work fine with apache 1.3.xx, but I don't have a php5 module that
> works with that. Likewise with versions of apache above 2.0.xx -- no
> php handler.
Off topic, and at the risk of belaboring the obvious, have you checked
$PATH in the different runs of apache?
Anno
------------------------------
Date: Wed, 11 Jul 2007 11:27:26 -0700
From: JC <jcottingim@yahoo.com>
Subject: SNMP::Util - set fails in script.
Message-Id: <1184178446.129670.184760@o61g2000hsh.googlegroups.com>
I'm writing a Perl script that will set several MIB variables.
When I run the script I get the following error messages:
STORE(SNMP::MIB=HASH(0x996ce74) enterprises.9.9.96.1.1.1.1.14
HASH(0x9aadf08)) : write access to the MIB not implemented
snmpset 10.10.1.1 index 5 .1.3.6.1.4.1.9.9.96.1.1.1.1.14 6
set Bad variable type (Sub-id not found: (top) -> enterprises)
Here's a very short version of the script:
---------------------------
#!/usr/bin/perl
use SNMP::Util;
$h = "10.10.1.1";
$c = "private";
$oid=".1.3.6.1.4.1.9.9.96.1.1.1.1.14";
$ix = "5";
$value="6"; #destroy
$session = new SNMP::Util(-device => $h,
-community => $c,
-timeout => 2);
$session->set(index => $ix,$oid => $value)
---------------------------
If I change the OID to something like .1.3.6.1.2.1.2.2.7
(ifAdminStatus) along with an appropriate index, the script runs fine.
The problem I think might have something do to with the fact that the
OID's index does not exist until the set operation is performed.
However, there are no snmp packets (of any sort) sent when the script
fails - so I know it's not doing a get operation prior to the set.
(verified with Wireshark)
Any thoughts/ideas would be greatly appreciated.
Thanks
JC
------------------------------
Date: Wed, 11 Jul 2007 16:12:13 +0000 (UTC)
From: kj <socyl@987jk.com.invalid>
Subject: Re: sysread vs read?
Message-Id: <f72vgs$6is$1@reader2.panix.com>
In <20070710192114.167$oU@newsreader.com> xhoster@gmail.com writes:
>kj <socyl@987jk.com.invalid> wrote:
>> I've rtfm'd this question but I still can't figure out why one
>> would prefer Perl's read over Perl's sysread, or viceversa.
>"read" can be used with readline (aka "<$fh>") , while sysread generally
>can't be, at least not without introducing strange behavior.
Hmmm... I sense that I'm missing something important here...
The reason I'm fussing over read and sysread in the first place is
that I wanted to speed up some code that currently uses readline
to get data from a huge file (about 1.5GB). I thought that I could
speed things up by reducing the number of disk reads; i.e. by
periodically reading, say, 4096 bytes to a buffer in memory and
feeding lines to the program from this buffer...
But, reading your reply between the lines a bit, I'm now guessing
that maybe Perl already does precisely this behind the scenes even
when one uses readline, meaning that I would not be gaining much
speed, and may even lose some, by switching from my naive <$fh>
implementation to one using read or sysread. Did I get this right?
TIA!
kj
--
NOTE: In my address everything before the first period is backwards;
and the last period, and everything after it, should be discarded.
------------------------------
Date: 11 Jul 2007 16:40:41 GMT
From: xhoster@gmail.com
Subject: Re: sysread vs read?
Message-Id: <20070711124042.743$z3@newsreader.com>
kj <socyl@987jk.com.invalid> wrote:
> In <20070710192114.167$oU@newsreader.com> xhoster@gmail.com writes:
>
> >kj <socyl@987jk.com.invalid> wrote:
> >> I've rtfm'd this question but I still can't figure out why one
> >> would prefer Perl's read over Perl's sysread, or viceversa.
>
> >"read" can be used with readline (aka "<$fh>") , while sysread generally
> >can't be, at least not without introducing strange behavior.
>
> Hmmm... I sense that I'm missing something important here...
>
> The reason I'm fussing over read and sysread in the first place is
> that I wanted to speed up some code that currently uses readline
> to get data from a huge file (about 1.5GB). I thought that I could
> speed things up by reducing the number of disk reads; i.e. by
> periodically reading, say, 4096 bytes to a buffer in memory and
> feeding lines to the program from this buffer...
The disk reads issue is mostly likely at yet another level, well below
Perl. Even sysread is not likely to be issuing a physical disk-read for
each read.
> But, reading your reply between the lines a bit, I'm now guessing
> that maybe Perl already does precisely this behind the scenes even
> when one uses readline, meaning that I would not be gaining much
> speed, and may even lose some, by switching from my naive <$fh>
> implementation to one using read or sysread. Did I get this right?
Yes, read and readline already do chunking.
Xho
--
-------------------- http://NewsReader.Com/ --------------------
Usenet Newsgroup Service $9.95/Month 30GB
------------------------------
Date: Wed, 11 Jul 2007 10:36:04 GMT
From: Erland Sommarskog <esquel@sommarskog.se>
Subject: Win32::SqlServer 2.003 releaed
Message-Id: <JL0nHG.7DE@zorch.sf-bay.org>
I've released version 2.003 of Win32::SqlServer. Source distribution
available on CPAN, binary distribution for ActivePerl is found my web site:
http://www.sommarskog.se/mssqlperl/index.html.
This is what's new:
* Win32::SqlServer now runs on AMD64. In lieu of hardware to test on,
IA64 is still unsupported. Note that the bigint data type is handled
differently on 64-bit.
* Added a mid-level routine getcoluminfo() that returns information
about the columns in the result set(s).
* Added a new parameter to sql() and sql_sp(), $colinfostyle, that
permits you to specify that you want information about the columns in
the result set included in the return structure. You can opt get only
names, only position, or get a hash with detail information.
* Added a new result style, MULTISET_RC, that is very similar to
MULTISET, but which has row counts instead of empty arrays for
INSERT, UPDATE and DELETE statements.
* Re-implemented the conversion initiated by sql_set_conversion() to
use the Windows API, rather than relying on certain files being
available in System32. This makes about any code-page conversion
accessible from Win32::SqlServer. There is a new routine,
codepage_convert(), to convert a single value.
* sql_init() now has a fifth parameter, $provider.
* Fixed bug that caused a crash on Vista when an sql_variant value had
certain base types.
--
Erland Sommarskog, Stockholm, esquel@sommarskog.se
------------------------------
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 644
**************************************