[31426] in Perl-Users-Digest
Perl-Users Digest, Issue: 2678 Volume: 11
daemon@ATHENA.MIT.EDU (Perl-Users Digest)
Mon Nov 16 18:09:46 2009
Date: Mon, 16 Nov 2009 15:09:09 -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 Mon, 16 Nov 2009 Volume: 11 Number: 2678
Today's topics:
Convert HTML to XML <nickli2000@gmail.com>
Re: Convert HTML to XML <ben@morrow.me.uk>
Re: Convert HTML to XML <nickli2000@gmail.com>
Re: Convert HTML to XML <yankeeinexile@gmail.com>
Re: Convert HTML to XML <nickli2000@gmail.com>
Re: How to get a program output into array <derykus@gmail.com>
Image::Magick->Write() doesn't want to write (Dave Griffith)
Re: Image::Magick->Write() doesn't want to write <dannywoodz@yahoo.co.uk>
Re: Image::Magick->Write() doesn't want to write (Dave Griffith)
iterating with a substitution <RedGrittyBrick@spamweary.invalid>
Re: iterating with a substitution <rkb@i.frys.com>
Re: iterating with a substitution sln@netherlands.com
Re: iterating with a substitution <m@rtij.nl.invlalid>
midisox <peter@www.pjb.com.au>
Re: mingw Perl: no long doubles? <nospam-abuse@ilyaz.org>
Re: mingw Perl: no long doubles? <hjp-usenet2@hjp.at>
Question about using chomp and other functions together <me@me.com>
Re: Question about using chomp and other functions toge <RedGrittyBrick@spamweary.invalid>
Re: Question about using chomp and other functions toge <yankeeinexile@gmail.com>
Re: Question about using chomp and other functions toge <rvtol+usenet@xs4all.nl>
Re: Question about using chomp and other functions toge <someone@example.com>
Digest Administrivia (Last modified: 6 Apr 01) (Perl-Users-Digest Admin)
----------------------------------------------------------------------
Date: Mon, 16 Nov 2009 08:13:58 -0800 (PST)
From: Ninja Li <nickli2000@gmail.com>
Subject: Convert HTML to XML
Message-Id: <e78a366c-ce98-4316-b5c0-027311b9dca9@j9g2000vbp.googlegroups.com>
Hi,
I tried to parse a HTML page using HTML::TreeBuilder but it is a
little cumbersome. Is there an easier way to parse HTML, say from HTML
to XML? Which perl package and methods should I use?
Thanks in advance.
Nick
------------------------------
Date: Mon, 16 Nov 2009 16:43:28 +0000
From: Ben Morrow <ben@morrow.me.uk>
Subject: Re: Convert HTML to XML
Message-Id: <g2c8t6-bcl1.ln1@osiris.mauzo.dyndns.org>
Quoth Ninja Li <nickli2000@gmail.com>:
>
> I tried to parse a HTML page using HTML::TreeBuilder but it is a
> little cumbersome. Is there an easier way to parse HTML, say from HTML
> to XML? Which perl package and methods should I use?
It's not clear what you're trying to do once you've parsed it, but if
you want an XML DOMish interface then XML::LibXML will quite happily
parse HTML.
Ben
------------------------------
Date: Mon, 16 Nov 2009 10:18:33 -0800 (PST)
From: Ninja Li <nickli2000@gmail.com>
Subject: Re: Convert HTML to XML
Message-Id: <94c7a3c0-23d3-4a38-8c39-687d517c31bf@p32g2000vbi.googlegroups.com>
On Nov 16, 11:43=A0am, Ben Morrow <b...@morrow.me.uk> wrote:
>
> It's not clear what you're trying to do once you've parsed it, but if
> you want an XML DOMish interface then XML::LibXML will quite happily
> parse HTML.
>
> Ben
I tried to filter HTML to get the the earnings data, e.g. symbol,
company, event, time data (link: http://www.earnings.com/conferencecall.asp=
?client=3Dcb
) and put them in a text file.
------------------------------
Date: Mon, 16 Nov 2009 13:04:02 -0600
From: Lawrence Statton <yankeeinexile@gmail.com>
Subject: Re: Convert HTML to XML
Message-Id: <m1fx8e8f6l.fsf@mac.lan>
Ninja Li <nickli2000@gmail.com> writes:
>
> I tried to filter HTML to get the the earnings data, e.g. symbol,
>company, event, time data (link:
>http://www.earnings.com/conferencecall.asp?client=cb ) and put them in
>a text file.
HTML::TreeBuilder really is the "right" tool for parsing HTML you get
from the web. One of it's major strengths is it can generate reasonable
parse-trees from even unreasonable HTML.
Keep in mind that scraping earnings.com's website may be in violation of
their terms of use, and you should make sure you have appropriate
permission before doing that in an automated way.
--L
------------------------------
Date: Mon, 16 Nov 2009 13:40:49 -0800 (PST)
From: Ninja Li <nickli2000@gmail.com>
Subject: Re: Convert HTML to XML
Message-Id: <f05f55d5-351e-40e2-a24b-13afd1b292a0@m35g2000vbi.googlegroups.com>
On Nov 16, 2:04=A0pm, Lawrence Statton <yankeeinex...@gmail.com> wrote:
> Ninja Li <nickli2...@gmail.com> writes:
>
> HTML::TreeBuilder really is the "right" tool for parsing HTML you get
> from the web. One of it's major strengths is it can generate reasonable
> parse-trees from even unreasonable HTML.
>
> Keep in mind that scraping earnings.com's website may be in violation of
> their terms of use, and you should make sure you have appropriate
> permission before doing that in an automated way.
>
> --L
Thanks for your help and concern. We are a client of the website and
are trying to move for Excel-based program to perl.
------------------------------
Date: Sun, 15 Nov 2009 11:28:35 -0800 (PST)
From: "C.DeRykus" <derykus@gmail.com>
Subject: Re: How to get a program output into array
Message-Id: <5ff6bc98-4bc0-4cfb-8999-aec58820ad56@o9g2000prg.googlegroups.com>
On Nov 13, 10:04=A0pm, "C.DeRykus" <dery...@gmail.com> wrote:
> On Nov 13, 6:00=A0am, Thomas Barth <txba...@web.de> wrote:
>
> > Hi,
> > any Idea how to get the output of this command into an array? The outpu=
t
> > is still printed to the screen. The array @soxin keeps empty.
>
> > =A0 =A0 =A0open(SOXIN, "sox $path -r 8000 -c 1 $src_dir/$basename.vox s=
tat |");
> > =A0 =A0 =A0my @soxin =3D <SOXIN>;
> > =A0 =A0 =A0close(SOXIN);
>
> IPC::Run is another possibility:
>
> use IPC::Run qw( run );
> use strict ;
> use warnings;
>
> # ***** untested *****
>
> run ["sox $path -r 8000 -c 1 $src_dir/$basename.vox stat"],
> =A0 =A0 =A0'<', \my @soxin, \my $err
> =A0 or die "Markdown.pl failed: $?";
>
Blech. A better attempt:
run ["sox ..."] , '<', \undef, '>&', \$out_and_err
or die "failed: $?";
But IPC::Run isn't the right solution for this task.
--
Charles DeRykus
------------------------------
Date: Mon, 16 Nov 2009 21:10:29 +0000 (UTC)
From: dgriffi@cs.csbuak.edu (Dave Griffith)
Subject: Image::Magick->Write() doesn't want to write
Message-Id: <hdsf44$vh6$1@news.albasani.net>
I can't seem to get a CGI script that's supposed to do quick-and-dirty
conversions of any image into a png. My problem is that
$magick_image->Write('$upload_dir/$outfile'); never seems to output
anything. The script is essentially a copy of
http://articles.sitepoint.com/article/uploading-files-cgi-perl/ with
PerlMagick tacked on. Please help.
Here's the script:
#!/usr/bin/perl -wT
use strict;
use CGI;
use CGI::Carp qw ( fatalsToBrowser );
use File::Basename;
use Image::Magick;
$CGI::POST_MAX = 1024 * 5000;
my $safe_filename_characters = "a-zA-Z0-9_.-";
my $upload_dir = "/var/www/tmp";
my $query = new CGI;
my $filename = $query->param("image");
my $email_address = $query->param("email_address");
if ( !$filename ) {
print $query->header ( );
print "There was a problem uploading your image (try a smaller file).";
exit;
}
my ( $name, $path, $extension ) = fileparse ( $filename, '\..*' );
$filename = $name . $extension;
$filename =~ tr/ /_/;
$filename =~ s/[^$safe_filename_characters]//g;
if ( $filename =~ /^([$safe_filename_characters]+)$/ ){
$filename = $1;
}
else{
die "Filename contains invalid characters";
}
my $upload_filehandle = $query->upload("image");
open ( UPLOADFILE, ">$upload_dir/$filename" )
or die "$! Cannot write to $upload_dir/$filename";
binmode UPLOADFILE;
while ( <$upload_filehandle> )
{
print UPLOADFILE;
}
close UPLOADFILE;
###################
# Image Conversion
###################
my $magick_image = Image::Magick->new();
my $outfile = $filename;
my $status;
$outfile =~ s/\..*$//g;
$outfile = $outfile . ".png";
open(IMAGE, '$upload_dir/$filename');
$magick_image->Read('$upload_dir/$filename');
$magick_image->Write('$upload_dir/$outfile');
close(IMAGE);
print $query->header ( );
print <<END_HTML;
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Your Converted Image</title>
<style type="text/css">
img {border: none;}
</style>
</head>
<body>
<p>Here is your original image</p>
<p><img src="/tmp/$filename" alt="Original Image" /></p>
<p>Here is your converted image</p>
<p><img src="/tmp/$outfile" alt="Converted Image" /></p>
</body>
</html>
END_HTML
--
David Griffith
dgriffi@cs.csbuak.edu <-- Switch the 'b' and 'u'
------------------------------
Date: Mon, 16 Nov 2009 21:23:31 +0000
From: Danny Woods <dannywoodz@yahoo.co.uk>
Subject: Re: Image::Magick->Write() doesn't want to write
Message-Id: <m1my2mgo4s.fsf@yahoo.co.uk>
dgriffi@cs.csbuak.edu (Dave Griffith) writes:
> I can't seem to get a CGI script that's supposed to do quick-and-dirty
> conversions of any image into a png. My problem is that
<snip>
> open(IMAGE, '$upload_dir/$filename');
> $magick_image->Read('$upload_dir/$filename');
> $magick_image->Write('$upload_dir/$outfile');
> close(IMAGE);
If that script is accurate, you're going to have a problem with (at
least) these lines. The single quotes prevent variable interpolation,
so you're trying to read and write files literally named
$upload_dir/$filename, $upload_dir/$outfile, etc. You'll have more luck
if you change these to double quotes, or, as an example,
sprintf('%s/%s', $upload_dir, $filename).
Cheers,
Danny.
------------------------------
Date: Mon, 16 Nov 2009 22:07:21 +0000 (UTC)
From: dgriffi@cs.csbuak.edu (Dave Griffith)
Subject: Re: Image::Magick->Write() doesn't want to write
Message-Id: <hdsieo$5o3$1@news.albasani.net>
Danny Woods <dannywoodz@yahoo.co.uk> wrote:
> dgriffi@cs.csbuak.edu (Dave Griffith) writes:
>> I can't seem to get a CGI script that's supposed to do quick-and-dirty
>> conversions of any image into a png. My problem is that
> <snip>
>> open(IMAGE, '$upload_dir/$filename');
>> $magick_image->Read('$upload_dir/$filename');
>> $magick_image->Write('$upload_dir/$outfile');
>> close(IMAGE);
> If that script is accurate, you're going to have a problem with (at
> least) these lines. The single quotes prevent variable interpolation,
> so you're trying to read and write files literally named
> $upload_dir/$filename, $upload_dir/$outfile, etc. You'll have more luck
> if you change these to double quotes, or, as an example,
> sprintf('%s/%s', $upload_dir, $filename).
Thanks. I was fiddling around with this for an hour. Argh!
--
David Griffith
dgriffi@cs.csbuak.edu <-- Switch the 'b' and 'u'
------------------------------
Date: Mon, 16 Nov 2009 17:32:39 +0000
From: RedGrittyBrick <RedGrittyBrick@spamweary.invalid>
Subject: iterating with a substitution
Message-Id: <4b018cba$0$2476$db0fefd9@news.zen.co.uk>
I'm feeling stupid. How can I combine the substitution and matching in
the example below?
-----------------8<--------------
#!/usr/bin/perl
use strict;
use warnings;
while (<DATA>) {
while (/<(\d+)>/g) { #1
print "$1 removed\n";
}
s/<\d>//g; #2
}
__DATA__
aaa aaa aaa aaa aaa aaa
bbb b <12> bb bbbb bbbb
cccc ccc cc cc cc ccccc
dd dd <22> dd <99> dd d
eee eee eee eee eee eee
-----------------8<--------------
12 removed
22 removed
99 removed
What #1 would eliminate the need for #2?
--
RGB
------------------------------
Date: Mon, 16 Nov 2009 12:10:27 -0800 (PST)
From: Ron Bergin <rkb@i.frys.com>
Subject: Re: iterating with a substitution
Message-Id: <5be99417-3c30-4d26-9c5f-6c83f45dc1c5@h40g2000prf.googlegroups.com>
On Nov 16, 9:32=A0am, RedGrittyBrick <RedGrittyBr...@spamweary.invalid>
wrote:
> I'm feeling stupid. How can I combine the substitution and matching in
> the example below?
>
> -----------------8<--------------
> #!/usr/bin/perl
> use strict;
> use warnings;
>
> while (<DATA>) {
> =A0 =A0while (/<(\d+)>/g) { =A0 =A0 #1
> =A0 =A0 =A0print "$1 removed\n";
> =A0 =A0}
> =A0 =A0s/<\d>//g; =A0 =A0 =A0 =A0 =A0 =A0 =A0 #2
>
> }
>
> __DATA__
> aaa aaa aaa aaa aaa aaa
> bbb b <12> bb bbbb bbbb
> cccc ccc cc cc cc ccccc
> dd dd <22> dd <99> dd d
> eee eee eee eee eee eee
> -----------------8<--------------
>
> 12 removed
> 22 removed
> 99 removed
>
> What #1 would eliminate the need for #2?
>
> --
> RGB
while (<DATA>) {
print "$1 removed\n" while s/<(\d+)>//;
}
------------------------------
Date: Mon, 16 Nov 2009 13:38:17 -0800
From: sln@netherlands.com
Subject: Re: iterating with a substitution
Message-Id: <ggh3g59q4q38fgas9rpmevhb2s8elsu28g@4ax.com>
On Mon, 16 Nov 2009 17:32:39 +0000, RedGrittyBrick <RedGrittyBrick@spamweary.invalid> wrote:
>
>I'm feeling stupid. How can I combine the substitution and matching in
>the example below?
>
>-----------------8<--------------
>#!/usr/bin/perl
>use strict;
>use warnings;
>
>while (<DATA>) {
> while (/<(\d+)>/g) { #1
> print "$1 removed\n";
> }
> s/<\d>//g; #2
>}
>
>__DATA__
>aaa aaa aaa aaa aaa aaa
>bbb b <12> bb bbbb bbbb
>cccc ccc cc cc cc ccccc
>dd dd <22> dd <99> dd d
>eee eee eee eee eee eee
>-----------------8<--------------
>
>12 removed
>22 removed
>99 removed
>
>
>What #1 would eliminate the need for #2?
use strict;
use warnings;
{
local $/ = 4096;
(my $str=<DATA>) =~ s/<(\d+)>(?{ print "$^N removed\n" })//g;
print "\n",$str;
}
__DATA__
aaa aaa aaa aaa aaa aaa
bbb b <12> bb bbbb bbbb
cccc ccc cc cc cc ccccc
dd dd <22> dd <99> dd d
eee eee eee eee eee eee
-sln
------------------------------
Date: Mon, 16 Nov 2009 23:15:39 +0100
From: Martijn Lievaart <m@rtij.nl.invlalid>
Subject: Re: iterating with a substitution
Message-Id: <bhv8t6-0c8.ln1@news.rtij.nl>
On Mon, 16 Nov 2009 13:38:17 -0800, sln wrote:
> (my $str=<DATA>) =~ s/<(\d+)>(?{ print "$^N removed\n" })//g; print
Why use an experimental feature when perfect standard idioms are known?
M4
------------------------------
Date: 16 Nov 2009 21:58:33 GMT
From: Peter Billam <peter@www.pjb.com.au>
Subject: midisox
Message-Id: <slrnhg3io9.2mk.peter@box8.pjb.com.au>
Greetings,
Midisox is a tool to combine and process MIDI files, with a calling
interface inspired by the well-known SoX which works on audio files.
Now in two versions:
* In Python3, requires also MIDI.py and TermClui.py
* In Perl, requires also MIDI-Perl and Term::Clui
Midisox has reached version 3.6; it now does SoX's echo, fade,
key, mixer, pad, repeat, stat, tempo and trim effects, and is
almost completely command-line-compatible with SoX. See:
http://www.pjb.com.au/midi/midisox.html
http://www.pjb.com.au/midi/midisox.html#download
Regards, Peter
--
Peter Billam www.pjb.com.au www.pjb.com.au/comp/contact.html
------------------------------
Date: Mon, 16 Nov 2009 11:35:47 +0000 (UTC)
From: Ilya Zakharevich <nospam-abuse@ilyaz.org>
Subject: Re: mingw Perl: no long doubles?
Message-Id: <slrnhg2e8j.4dd.nospam-abuse@powdermilk.math.berkeley.edu>
On 2009-11-15, Peter J. Holzer <hjp-usenet2@hjp.at> wrote:
>> P.S. Due to a bug in test suite, today it has come to my attension
>> that similar restrictions exist on s390 and alpha linuxes; but
>> there it is hardware limitation; while Win32 in question is
>> ix86...
> Wrong. The Alpha architecture does have a 128 bit floating point type
> (in fact it has two of them: The VAX-compatible H_floating and the alpha
> specific (and supposedly IEEE-754 compatible) X_floating type). It's
> possible that some compilers don't support it, of course.
Interesting: why would gcc be among such compilers? ;-) :-(
http://www.nntp.perl.org/group/perl.cpan.testers/2009/11/msg5974479.html
And this kills my reasoning why M$ would kill long double in its
compilers...
Thanks,
Ilya
------------------------------
Date: Mon, 16 Nov 2009 21:58:50 +0100
From: "Peter J. Holzer" <hjp-usenet2@hjp.at>
Subject: Re: mingw Perl: no long doubles?
Message-Id: <slrnhg3f8b.feh.hjp-usenet2@hrunkner.hjp.at>
On 2009-11-14 22:56, Shmuel Metz <spamtrap@library.lspace.org.invalid> wrote:
> In <slrnhfq0jr.lgf.nospam-abuse@powdermilk.math.berkeley.edu>, on
> 11/13/2009
> at 06:53 AM, Ilya Zakharevich <nospam-abuse@ilyaz.org> said:
>
>>P.S. Due to a bug in test suite, today it has come to my attension
>> that similar restrictions exist on s390 and alpha linuxes; but
>> there it is hardware limitation;
>
> Does "s390" refer only to IBM's old S/390 line or also to the current
> zSeries line? Certainly all current zSeries processors have 64-bit
> arithmetic, and I believe that the earliest ones did as well.
>
Normally a double is 64 bits[1], so a true long double type (i.e., one
which isn't identical to double) has to have more than 64 bits. Typical
sizes are 80 bits (Intel), 96 bits (at least some Motorola processors),
and 128 bits (VAX, Alpha, SPARC(?)).
hp
[1] A standard conforming implementation could get by with 43 bits:
34 bits for the mantissa (DBL_DIG=10), 8 bits for the exponent
(FLT_MAX_10_EXP=37), 1 sign bit.
------------------------------
Date: Mon, 16 Nov 2009 17:45:54 +0000
From: George <me@me.com>
Subject: Question about using chomp and other functions together
Message-Id: <hds34i$gnk$1@canard.ulcc.ac.uk>
Dear All,
I wrote a function to mimic the behavior of the trim function in
Javascript as follows:
sub trim($)
{
my $string = shift;
$string =~ s/^\s+//;
$string =~ s/\s+$//;
return $string;
}
Then I am using it as follows:
$finalstate = chomp(trim(<STDIN>));
When I try and run it, I get the following message:
Can't modify non-lvalue subroutine call in chomp at ./trans2autnew.pl
line 63, near "))"
Execution of ./trans2autnew.pl aborted due to compilation errors.
(of course, strict and warnings are on).
Could you help me resolving this as I new to Perl (but not in
programming in general)?
Regards,
George
------------------------------
Date: Mon, 16 Nov 2009 17:54:03 +0000
From: RedGrittyBrick <RedGrittyBrick@spamweary.invalid>
Subject: Re: Question about using chomp and other functions together
Message-Id: <4b0191be$0$2533$da0feed9@news.zen.co.uk>
George wrote:
> Dear All,
>
> I wrote a function to mimic the behavior of the trim function in
> Javascript as follows:
>
> sub trim($)
> {
> my $string = shift;
> $string =~ s/^\s+//;
> $string =~ s/\s+$//;
> return $string;
> }
>
> Then I am using it as follows:
>
> $finalstate = chomp(trim(<STDIN>));
>
> When I try and run it, I get the following message:
> Can't modify non-lvalue subroutine call in chomp at ./trans2autnew.pl
> line 63, near "))"
> Execution of ./trans2autnew.pl aborted due to compilation errors.
> (of course, strict and warnings are on).
>
> Could you help me resolving this as I new to Perl (but not in
> programming in general)?
>
chomp($finalstate = trim(<STDIN>));
--
RGB
------------------------------
Date: Mon, 16 Nov 2009 13:00:56 -0600
From: Lawrence Statton <yankeeinexile@gmail.com>
Subject: Re: Question about using chomp and other functions together
Message-Id: <m1k4xq8fbr.fsf@mac.lan>
George <me@me.com> writes:
>
> $finalstate = chomp(trim(<STDIN>));
>
Therein lies your problem ...
The "most useful" functionality of chomp(), that is, the removal of the
currently-defined end-of-line character from the end of a string (should
it exist) is applied to its _argument_.
The return value is the "less (but occasionally) useful" funcationality,
"Was something removed from the argument?"
> Could you help me resolving this as I new to Perl (but not in
> programming in general)?
> Regards,
> George
------------------------------
Date: Mon, 16 Nov 2009 20:36:36 +0100
From: "Dr.Ruud" <rvtol+usenet@xs4all.nl>
Subject: Re: Question about using chomp and other functions together
Message-Id: <4b01a9c5$0$22937$e4fe514c@news.xs4all.nl>
George wrote:
> sub trim($)
> {
> my $string = shift;
I use shift only if changing @_ is profitable.
my ($string) = @_;
> $string =~ s/^\s+//;
> $string =~ s/\s+$//;
s/\s+\z//, s/\A\s+// for $string;
> return $string;
> }
>
> Then I am using it as follows:
>
> $finalstate = chomp(trim(<STDIN>));
No need for chomp, because trim() already
removed all whitespace at both ends.
--
Ruud
------------------------------
Date: Mon, 16 Nov 2009 14:24:25 -0800
From: "John W. Krahn" <someone@example.com>
Subject: Re: Question about using chomp and other functions together
Message-Id: <uikMm.25610$ZF3.15888@newsfe13.iad>
Dr.Ruud wrote:
> George wrote:
>
>> sub trim($)
>> {
>> my $string = shift;
>
> I use shift only if changing @_ is profitable.
>
> my ($string) = @_;
>
>
>> $string =~ s/^\s+//;
>> $string =~ s/\s+$//;
>
> s/\s+\z//, s/\A\s+// for $string;
>
>> return $string;
>> }
>>
>> Then I am using it as follows:
>>
>> $finalstate = chomp(trim(<STDIN>));
>
> No need for chomp, because trim() already
> removed all whitespace at both ends.
Assuming that $/ contains some kind of whitespace character(s).
John
--
The programmer is fighting against the two most
destructive forces in the universe: entropy and
human stupidity. -- Damian Conway
------------------------------
Date: 6 Apr 2001 21:33:47 GMT (Last modified)
From: Perl-Users-Request@ruby.oce.orst.edu (Perl-Users-Digest Admin)
Subject: Digest Administrivia (Last modified: 6 Apr 01)
Message-Id: <null>
Administrivia:
To submit articles to comp.lang.perl.announce, send your article to
clpa@perl.com.
Back issues are available via anonymous ftp from
ftp://cil-www.oce.orst.edu/pub/perl/old-digests.
#For other requests pertaining to the digest, send mail to
#perl-users-request@ruby.oce.orst.edu. Do not waste your time or mine
#sending perl questions to the -request address, I don't have time to
#answer them even if I did know the answer.
------------------------------
End of Perl-Users Digest V11 Issue 2678
***************************************