[26153] in Perl-Users-Digest

home help back first fref pref prev next nref lref last post

Perl-Users Digest, Issue: 8344 Volume: 10

daemon@ATHENA.MIT.EDU (Perl-Users Digest)
Sun Aug 21 18:05:24 2005

Date: Sun, 21 Aug 2005 15:05:04 -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, 21 Aug 2005     Volume: 10 Number: 8344

Today's topics:
        Best Linux distro for range of Perl modules <none@none.com>
    Re: how to read file from sub-directories and do an ave <tadmc@augustmail.com>
    Re: Organizing data for readability and efficiency (Anno Siegel)
    Re: Organizing data for readability and efficiency <flavell@ph.gla.ac.uk>
        Strange Error that doesn't get in my way...False [] ran <nospam@nospam.com>
    Re: Strange Error that doesn't get in my way...False [] <no@email.com>
    Re: Strange Error that doesn't get in my way...False [] <nospam@nospam.com>
    Re: Strange Error that doesn't get in my way...False [] <1usa@llenroc.ude.invalid>
        Use of uninitialized value Error <nospam@nospam.com>
    Re: Use of uninitialized value Error <1usa@llenroc.ude.invalid>
    Re: Use of uninitialized value Error <noreply@gunnar.cc>
        Digest Administrivia (Last modified: 6 Apr 01) (Perl-Users-Digest Admin)

----------------------------------------------------------------------

Date: Sun, 21 Aug 2005 16:04:40 +0100
From: zaphod <none@none.com>
Subject: Best Linux distro for range of Perl modules
Message-Id: <43089808$0$22919$ed2619ec@ptn-nntp-reader01.plus.net>

Any views on which Linux distro installs the widest range of Perl module
packages with a full install or with a minimal upgrade after the default
install?

I've been working with Fedora for a while but the full install doesn't come
with many Perl modules unless I'm missing something. Up2date doesn't seem to
have much to offer either.

I don't want to be compiling from source as the aim is to get a lot of Linux
boxen up and running quickly.

zaphod


------------------------------

Date: Sun, 21 Aug 2005 10:26:26 -0500
From: Tad McClellan <tadmc@augustmail.com>
Subject: Re: how to read file from sub-directories and do an average?
Message-Id: <slrndgh792.h3v.tadmc@magna.augustmail.com>

Ross <a@cuhk.edu.hk> wrote:

> Is there any built-in function/parameters in Perl not to take . and .. into 
> account when opening all the subdirectories?


No, but there _is_ a way to avoid processing them.  :-)

   while ( my $item = readdir DIR ) {

      next if $item eq '.' or $item eq '..';
      # next if $item /^\./;    # skip ALL items that start with dot

      # process non-dot files here
   }


-- 
    Tad McClellan                          SGML consulting
    tadmc@augustmail.com                   Perl programming
    Fort Worth, Texas


------------------------------

Date: 21 Aug 2005 12:40:30 GMT
From: anno4000@lublin.zrz.tu-berlin.de (Anno Siegel)
Subject: Re: Organizing data for readability and efficiency
Message-Id: <de9snu$9g0$1@mamenchi.zrz.TU-Berlin.DE>

Mark Seger  <Mark.Seger@hp.com> wrote in comp.lang.perl.misc:
> Anno Siegel wrote:
> > Mark Seger  <Mark.Seger@hp.com> wrote in comp.lang.perl.misc:

[...]

> > You appear to be obsessed with efficiency.  You even wrote me in private
> > about it, but I want to keep it on Usenet, I won't reply.
> > 
> > At this stage of programming, efficiency is no concern of yours.  The
> > point to begin worrying about efficiency is when you have a correct and
> > working program and it turns out to be slow, not before.
> 
> I'm afraid I have to strongly disagree with.

You are disagreeing with the collective experience of the programming
community.  Premature optimization kills projects.  There are few areas
where the consensus is as unanimous.

> I've known far to many 
> programmers who simply 'get it running' and then try to make it 
> efficient.

If they can't, there is something wrong with the program besides inefficiency.

The idea isn't to forget about efficiency and forge ahead any way that comes
to mind.  Disregarding efficiency gives you leeway that ought to be invested
in correctness, modularity and readability.  These three are most often
neglected in the name of efficiency, and experience has shown that it doesn't
pay.

> Sometimes this cannot be done without an entire 
> redesign/rewrite,

Sure you have to re-write things to speed them up.  The point of "late
optimization" is that you have a running program to profile to see where
it is spending time.  If the program is modular you'll have to rewrite
one module (or some modules), not the whole program.  If the program is well
written, the changes will be straightforward and easy to implement.  Since
it is correct, you can write a set of unit tests to make sure it stays
correct during optimization.

That is a much better base for making it fast than to always choose
the fastest method you can think of, just because it might matter.
Far more often than intuition would have it it *doesn't matter at all*.

You may even decide to break modularity after the fact and let one part
of the program peek at what another is doing to save time.  If you do,
that will be an isolated occurrence with a well-known reason behind it.

> perhaps one of the best examples of this is database 
> design in which your table organization is plan ineficient.

You don't do database accesses for nothing.  If processing each element
takes twenty times as long as accessing it in the first place, it simply
won't matter if the database is inefficient.  You can keep it that way
and invest the design freedom in other desirable features.

[...]

> > Also I fully agree with Xho's take that the organization of your data
> > is unlikely to have a noticeable effect on the runtime.
> 
> again I have to disagree.  perhaps I could have stated my question about 
> how the internals of arrays vs hashes are organized but I really didn't 
> want to go there.  When I think of an array I think of adding and index 
> to a pointer to get the the cell you desire.  When I think of a hash I 
> think of having to do some sort of lookup which seems like more overhead 
> to me.

That is a good example of how intuition is misleading you.  Yes, it's true:
At the core of an array access is just a lookup in a C array structure,
while at the core of a hash access there is key generation, a lookup in an
array structure, plus, usually, a short linear search for the right value.
That may easily take a hundred or a thousand times longer than the array
access alone.

However, both take the overhead of calling a perl operation, which,
shockingly, takes so long that the difference between hash and array
hardly matters.  Just fire up Benchmark and run a few tests on your
machine.  The difference will probably be measurable, but not much more
than that.  Surely no reason to prefer a less convenient data structure.

[...]

> All can say with reference to my earlier comment about reorganizing a 
> single pattern match in an 'if' statement is that I had a script that 
> was reading something like a few millions lines of text and analyzing 
> it.  It took something like a minute to run before I modified it and 
> after the modification I shaved off over 10 seconds, which to me is a 
> very significant thing.

A good example how a well-aimed change in a running program can speed it
up.  How does that contradict my point?

> Whenever I write a script that doesn't process all that much data I 
> don't worry too much about efficiency but when there is a lot of data I 
> get scared.

It only means that you may *have* an optimization step before you release
the program, not that it's useful to worry about speed all the time.
It isn't.

Programmers often want to get their code right the first time.  Having
to re-write it seems like a failure and a waste of time.  This is
re-inforced by early experiences where a single wrong decision made you
go over hundreds of lines of code to correct it.

Well, in any non-trivial project you will have to re-write a lot of
code anyway, no matter how careful you write it the first time.  Also,
the second time goes *much* faster and the result is often much better
than the first attempt, so the time isn't purely wasted.

Instead, put your effort in writing modular code so that the inevitable
changes are limited in scope.  That also gives you the best base for
later optimization.

Anno
-- 
If you want to post a followup via groups.google.com, don't use
the broken "Reply" link at the bottom of the article.  Click on 
"show options" at the top of the article, then click on the 
"Reply" at the bottom of the article headers.


------------------------------

Date: Sun, 21 Aug 2005 14:52:07 +0100
From: "Alan J. Flavell" <flavell@ph.gla.ac.uk>
Subject: Re: Organizing data for readability and efficiency
Message-Id: <Pine.LNX.4.62.0508211433120.27520@ppepc56.ph.gla.ac.uk>

On Sat, 20 Aug 2005, Mark Seger wrote:

> All can say with reference to my earlier comment about reorganizing 
> a single pattern match in an 'if' statement is that I had a script 
> that was reading something like a few millions lines of text and 
> analyzing it.  It took something like a minute to run before I 
> modified it and after the modification I shaved off over 10 seconds, 
> which to me is a very significant thing.

That sounds like speeding-up a program which has already been written 
and is working.  But you seem to be trying to use the argument to 
justify premature optimisation while the program is being written. 
That's illogical.

Then again: if results were needed in, say, 15 secs, then neither 
program would have been of any use, since they both delivered the 
answer far too late.  Whereas, if the results weren't needed for an 
hour, then the time and effort spent cutting the 60 seconds down to 50 
was completely wasted.  CPU time costs almost nothing, compared to 
software development time.

Anyway, to come back to the point: premature optimisation of code 
during its development can be - and often is - harmful.  It's not the 
same as choosing a good algorithm.  Nor is it the same as benchmarking 
and tuning a working system.

Design the system with an appropriate algorithm - sure[1]; but code 
for correctnesss and maintainability; see whether the resulting 
program does the job in an acceptable time; if and only if there's a 
problem with that, benchmark to see where the bottleneck(s) are.  
Concentrate on those.

I have to say that many a time, we have prototyped a program in a 
convenient language (in recent years, that has often been Perl) to 
prove a concept, with the intention of later coding a production 
implementation in a lower level language for efficiency. And the 
prototype has been so successful that it was tidied up for production, 
and the re-coding into another language has been conveniently 
forgotten.

> Whenever I write a script that doesn't process all that much data I 
> don't worry too much about efficiency but when there is a lot of 
> data I get scared.

Don't get scared, get even.  Run a benchmark.

good luck

[1] I've never quite forgotten the true story of a program which was 
taking 3 days to run.  Intensive work on the efficiency of the code 
was saving a few minutes here, and a few minutes there.  Finally, a 
theoretician looked at the design and concluded that the wrong 
algorithm had been chosen.  A new design was produced, based on a 
more-suitable algorithm, and the program needed about 20 minutes.



------------------------------

Date: Sun, 21 Aug 2005 15:36:01 -0400
From: "daniel kaplan" <nospam@nospam.com>
Subject: Strange Error that doesn't get in my way...False [] range 
Message-Id: <1124652889.160707@nntp.acecape.com>

Hi All,

In my code, I have this little snippet:

 if($phone =~ /[^\d- ]/)
 {
  $out_msg  .= "- The <font color = \"#0A0000\">Phone Number</font> may only
consist of numbers separated by a space or the <b>-</b> character<p>";
  $phone = "";
 }

and my server has this in the error log:

False [] range "\d-" in regex; marked by <-- HERE in m/[^\d- <-- HERE  ]/ at
newuser.pl line 160

I tried quoting the -, but anyway I quote it, and the code no longer works.
Where as if I leave it alone, I get that error in my server, but it works.

Thought maybe someone could tell me how I'm doing it wrong.

Thanks ahead,

Daniel




------------------------------

Date: Sun, 21 Aug 2005 20:48:33 +0100
From: Brian Wakem <no@email.com>
Subject: Re: Strange Error that doesn't get in my way...False [] range
Message-Id: <3ms44hF18e58lU1@individual.net>

daniel kaplan wrote:

> Hi All,
> 
> In my code, I have this little snippet:
> 
>  if($phone =~ /[^\d- ]/)
>  {
>   $out_msg  .= "- The <font color = \"#0A0000\">Phone Number</font> may
>   only
> consist of numbers separated by a space or the <b>-</b> character<p>";
>   $phone = "";
>  }
> 
> and my server has this in the error log:
> 
> False [] range "\d-" in regex; marked by <-- HERE in m/[^\d- <-- HERE  ]/
> at newuser.pl line 160
> 
> Daniel


That's because it is a false range.  A "-" in a character class with
something preceding it denotes a range, so [A-Z] is that same as
[ABCDEF....XYZ].  If you want to have a "-" in a character class put it at
the beginning [^-\d ].


-- 
Brian Wakem
Email: http://homepage.ntlworld.com/b.wakem/myemail.png


------------------------------

Date: Sun, 21 Aug 2005 17:18:33 -0400
From: "daniel kaplan" <nospam@nospam.com>
Subject: Re: Strange Error that doesn't get in my way...False [] range
Message-Id: <1124659224.780437@nntp.acecape.com>

"Brian Wakem" <no@email.com> wrote in message
news:3ms44hF18e58lU1@individual.net...

> That's because it is a false range.  A "-" in a character class with
> something preceding it denotes a range, so [A-Z] is that same as
> [ABCDEF....XYZ].  If you want to have a "-" in a character class put it at
> the beginning [^-\d ].


Geez thanks, why couldn't I think of moving it?  Doh!  I was going by what I
found in the "perl56delta" and it was talking about quoting it, and I tried
each and every way.  But just couldn't get it to work.  Got too complex I
guess.

Thanks again




------------------------------

Date: Sun, 21 Aug 2005 21:49:35 GMT
From: "A. Sinan Unur" <1usa@llenroc.ude.invalid>
Subject: Re: Strange Error that doesn't get in my way...False [] range
Message-Id: <Xns96B9B551B119asu1cornelledu@127.0.0.1>

"daniel kaplan" <nospam@nospam.com> wrote in
news:1124659224.780437@nntp.acecape.com: 

> "Brian Wakem" <no@email.com> wrote in message
> news:3ms44hF18e58lU1@individual.net...
> 
>> That's because it is a false range.  A "-" in a character class with
>> something preceding it denotes a range, so [A-Z] is that same as
>> [ABCDEF....XYZ].  If you want to have a "-" in a character class put
>> it at the beginning [^-\d ].
> 
> 
> Geez thanks, why couldn't I think of moving it?  Doh!  I was going by
> what I found in the "perl56delta" and it was talking about quoting it,
> and I tried each and every way.  But just couldn't get it to work. 
> Got too complex I guess.

perldoc perlreref:

NAME
    perlreref - Perl Regular Expressions Reference

 ...

 CHARACTER CLASSES
      [amy]    Match 'a', 'm' or 'y'
      [f-j]    Dash specifies "range"
      [f-j-]   Dash escaped or at start or end means 'dash'
      [^f-j]   Caret indicates "match any character _except_ these"


Sinan
-- 
A. Sinan Unur <1usa@llenroc.ude.invalid>
(reverse each component and remove .invalid for email address)

comp.lang.perl.misc guidelines on the WWW:
http://mail.augustmail.com/~tadmc/clpmisc/clpmisc_guidelines.html


------------------------------

Date: Sun, 21 Aug 2005 17:42:28 -0400
From: "daniel kaplan" <nospam@nospam.com>
Subject: Use of uninitialized value Error
Message-Id: <1124660477.785784@nntp.acecape.com>

Hi,

Below **** is a simple Perl app I wrote, complete, and sorry for the bad
formatting.  It gives me an error in my error_log (on the server) but still
runs fine.

The error is:  uninittest.pl: Use of uninitialized value in concatenation
(.) or string at uninittest.pl line 45.

And I have to say I have seen many different variations of this error
before.  The other I have frequently is, "Use of uninitialized value in
string eq "  and nowhere can I find this in the PerlFAQ, am sure it's there,
but unsure how to search.  A Google attempt brings me so many actual error
logs that if a webpage exists that does explain this properly, it's too
buried for me to find it.

sigh.

The error doesn't get in the way, but even if it's just to keep my server
log clean I have to hunt this down.  Even worse, chances are that my coding
on something is borderline "eh" and  I have to find it!

thanks ahead,

daniel


**** all code
#!/usr/bin/perl

use warnings;
use strict;
use CGI;
use CGI::Carp qw(fatalsToBrowser);
use DBI;
use Authen::Captcha;

my $q = new CGI;
my $out = "";

my $number_of_characters = 4;
my $captcha = Authen::Captcha->new();

$captcha->data_folder('../cap_data');
$captcha->output_folder('../cap_output');
$captcha->width( 37 );
$captcha->height( 52 );

my $song1         = $q->param('song1');
my $artist1         = $q->param('artist1');
my $song2         = $q->param('song2');
my $artist2         = $q->param('artist2');
my $song3        = $q->param('song3');
my $artist3         = $q->param('artist3');
my $age          = $q->param('age');
my $ema          = $q->param('email');

my $came_from   = $ENV{'HTTP_REFERER'};


my ($md5sum,$chars) = $captcha->generate_code( $number_of_characters );



PrintSurvey();
print $q->header();
print $out;
exit 0;


sub PrintSurvey
{
 $out = qq^
 <HTML>
 <HEAD>
 <TITLE>Closet Music Survey</TITLE>

 <META name="description" content="A survey to find out what are the top
songs that you like, but would never tell a soul!">
 <meta name="Keywords" content="music survey barry manilow abba MUSIC SURVEY
BARRY MANILOW ABBA bee gees BEE GEES BEEGEES beegees">


 </HEAD>
 <body bgcolor="#EEEEFF" text="#000000" link="#0000FF" vlink="#660033"
background="">
 <table border="3" cellpadding="3">
  <tr>
   <td align="left" rowspan="2">
   <font size = 3 color = "#000077">
   Remeber that scene in \"Tommy Boy\" where Farely and Spade are arguing
over
   what station to stay tuned to?  Then finally they come across a station
that\'s
   playing a song by The Carpenters.<p>
   Both of them are like, "You can change it if you want." Then cut to 1
minute later
   and their both singing along and bawling like most people do when
recalling the
   last scene in "Old Yeller"! <i><b>Whoever thought Disney would make a
snuff flick?!?</i></b><p>
   So it got me to thinking, we all have closet songs.  Songs we like that
we would never
   want our friends to know about.  \"I\'d rather you read my diary than go
through my iPod!\" <p>
   So here\'s what I\'m doing, I\'m taking a survey:<p>
   I want to know your Top Three Closet Songs!  Those songs you know you
like, but would never,
   ever, ever, ever, want your friends to find out.<p>
   Thanks, <p>
   Sergio C.<br></font>
   <font size = 3 color = "#770000">p.s.  Please pass this link along, would
like to get enough data to
   make a real report here.</font>
   </td>
  </tr>
 </table>
 &nbsp;<p>

 <FORM name="MusicSurvey" enctype="multipart/form-data"
action="recordsurvey_4.pl" method="POST">
  <table border="0" CELLPADDING="5">
   <tr><td colspan="2">PLEASE DO NOT ENTER QUOTES!</td></tr>
   <tr>
    <td bgcolor="#CCCCDD" WIDTH=400>
     Song No. 1:&nbsp;<BR>
     Artist    :&nbsp;
    </td>
    <td>
     <input type="text" name="song1"   value='$song1' maxlength=64 size =
32><BR>
     <input type="text" name="artist1" value='$artist1' maxlength=64 size =
32>
    </td>
   </tr>
   <tr><td colspan="2">&nbsp;</td></tr>
   <tr>
    <td bgcolor="#CCCCDD" WIDTH=400>
     Song No. 2:&nbsp;<br>
     Artist    :&nbsp;
    </td>
    <td>
     <input type="text" name="song2"   value='$song2' maxlength=64 size =
32><BR>
     <input type="text" name="artist2" value='$artist2' maxlength=64 size =
32>
    </td>
   </tr>
   <tr><td colspan="2">&nbsp;</td></tr>
   <tr>
    <td bgcolor="#CCCCDD" WIDTH=400>
     Song No. 3:&nbsp;<br>
     Artist    :&nbsp;
    </td>
    <td>
     <input type="text" name="song3"   value='$song3' maxlength=64 size =
32><BR>
     <input type="text" name="artist3" value='$artist3' maxlength=64 size =
32>
    </td>
   </tr>
   <tr><td colspan="2">&nbsp;</td></tr>
   <tr>
    <td bgcolor="#CCCCDD" WIDTH=400>
     Age  :&nbsp;
    </td>
    <td>
     <input type="text" name="age"   value='$age' maxlength=2 size = 5><BR>
    </td>
   </tr>
   <tr><td colspan="2">&nbsp;</td></tr>
   <tr >
    <td <td bgcolor="#CCCCDD" WIDTH=400>
     <input type="hidden" name="burger" value = $md5sum>
     <input type="hidden" name="reffed" value = $came_from>
     <font size = "3">
     Verification Code
     <LABEL for="fries"><BR></LABEL>
     <INPUT type="text" name="fries"><p>
     <font color = "#770000" size = "2">Please enter the letters/numbers to
the right.<br>
     Sorry, have to do this to limits the Bots and jokers.</font>
     </font>
    </td>
    <td>
     <img border = "0" src="../cap_output/$md5sum.png">
    </td>
   </tr>
   <tr><td colspan="2">&nbsp;</td></tr>
   <tr>
    <td bgcolor="#CCCCDD" WIDTH=400>
     <b>Totally optional</b> Email:&nbsp;<br>
     You don\'t have to, and even if you do, it will <b>not</b> be
posted.<P>
     If you want to know when I post the results, give me your email and
you\'ll
     receive just <b>one</b> automated email when that happens.<p>
     Again, <b>No Spam</b> from me, and I <b>won\'t</b> post your email
anywhere.<p>
     As I said, totally optional!  You can skip this part and not give me
your email!
    </td>
    <td>
     <input type="text" name="email" value='$ema' maxlength=64 size = 32>
    </td>
   </tr>
   <tr><td colspan="2">&nbsp;</td></tr>
  </table>
  <INPUT type="submit" value="submit">&nbsp;&nbsp;&nbsp;
 </form>


 </body>
 </html>^;
}






------------------------------

Date: Sun, 21 Aug 2005 21:59:44 GMT
From: "A. Sinan Unur" <1usa@llenroc.ude.invalid>
Subject: Re: Use of uninitialized value Error
Message-Id: <Xns96B9B709FE392asu1cornelledu@127.0.0.1>

"daniel kaplan" <nospam@nospam.com> wrote in
news:1124660477.785784@nntp.acecape.com: 

> The error is:  uninittest.pl: Use of uninitialized value in
> concatenation (.) or string at uninittest.pl line 45.

That is not an error: It is a warning.

> The error doesn't get in the way, but even if it's just to keep my
> server log clean I have to hunt this down

To suppress the warning, you can use

no warnings 'unintialized';

in the smallest possible scope.

To fix your code, you need to make sure all variables hold valid values 
when you use them in operations.

> **** all code

OK, but why couldn't you tell us where line 45 is?

When I paste the code in my editor, line 45 corresponds to the opening 
brace of sub PrintSurvey. I am assuming the warning comes from the 
assignment to $out which seems to have a number of interpolated 
variables. It is impossible to know exactly which one is causing the 
warning to be emitted, because you did not actually check the values 
passed to your script. However, see below.

> my $came_from   = $ENV{'HTTP_REFERER'};

You are assuming your script is actually given this value. Even if the 
user faithfully fills in all the form fields, there is no guarantee that 
your script will get a non empty HTTP_REFERER (see 
<URL:http://www.faqts.com/knowledge_base/view.phtml/aid/31>).

Replace this with

my $came_from = 'I must learn proper CGI programming first';

and see if the warning disappears.

I will also suggest, at the very least, that you use HTML::Template with 
your scripts.

Sinan
-- 
A. Sinan Unur <1usa@llenroc.ude.invalid>
(reverse each component and remove .invalid for email address)

comp.lang.perl.misc guidelines on the WWW:
http://mail.augustmail.com/~tadmc/clpmisc/clpmisc_guidelines.html


------------------------------

Date: Mon, 22 Aug 2005 00:03:25 +0200
From: Gunnar Hjalmarsson <noreply@gunnar.cc>
Subject: Re: Use of uninitialized value Error
Message-Id: <3msc1eF17vnb2U1@individual.net>

daniel kaplan wrote:
> The error is:  uninittest.pl: Use of uninitialized value in concatenation
> (.) or string at uninittest.pl line 45.

That's not an error, it's a warning.

> if a webpage exists that does explain this properly, it's too
> buried for me to find it.

Too buried? Don't think so. It's part of the core docs.

http://perldoc.perl.org/perldiag.html

-- 
Gunnar Hjalmarsson
Email: http://www.gunnar.cc/cgi-bin/contact.pl


------------------------------

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 V10 Issue 8344
***************************************


home help back first fref pref prev next nref lref last post