[32873] in Perl-Users-Digest

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

Perl-Users Digest, Issue: 4151 Volume: 11

daemon@ATHENA.MIT.EDU (Perl-Users Digest)
Tue Feb 25 03:09:34 2014

Date: Tue, 25 Feb 2014 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           Tue, 25 Feb 2014     Volume: 11 Number: 4151

Today's topics:
    Re: cookie <john@castleamber.com>
    Re: cookie <xhoster@gmail.com>
    Re: Dancer alex.karelas@gmail.com
    Re: non-working perl script under Windows 2008 (Jens Thoms Toerring)
    Re: non-working perl script under Windows 2008 <sbryce@scottbryce.com>
    Re: obj 8-2 <jurgenex@hotmail.com>
    Re: obj 8-2 <news@todbe.com>
    Re: use strict; use warnings; <hjp-usenet3@hjp.at>
    Re: use strict; use warnings; <mach2@hushmail.com>
    Re: use strict; use warnings; <ben@morrow.me.uk>
    Re: use strict; use warnings; <ben@morrow.me.uk>
    Re: use strict; use warnings; (Jens Thoms Toerring)
    Re: use strict; use warnings; <ben@morrow.me.uk>
    Re: use strict; use warnings; <mach2@hushmail.com>
    Re: use strict; use warnings; <news@todbe.com>
    Re: use strict; use warnings; <news@lawshouse.org>
    Re: use strict; use warnings; <mvdwege@gmail.com>
        Digest Administrivia (Last modified: 6 Apr 01) (Perl-Users-Digest Admin)

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

Date: Mon, 24 Feb 2014 17:22:06 -0600
From: John Bokma <john@castleamber.com>
Subject: Re: cookie
Message-Id: <87ob1wayg1.fsf@castleamber.com>

George Mpouras <gravitalsun@hotmail.foo> writes:

> 2) In case there is no cookie, or if the cookie data are not valid,
> The user must fill a form.
> If the form data validated successfully, then a cookie must be sent at
> user's browser , and redirected to the final page (here is the
> difficulty is to send the cookie after the submission and validation)

So you set the cookie and redirect (untested)

print $cgi->redirect(
   -cookie => $cookie,
   -status => '301 Moved Permanently'
   -uri    => 'http://example.com/formok.html'
);

-cookie is not documented (?), but a quick peek at the source of CGI.pm
gives me the impression that this is supported.

-- 
John Bokma                                                               j3b

Blog: http://johnbokma.com/        Perl Consultancy: http://castleamber.com/
Perl for books:    http://johnbokma.com/perl/help-in-exchange-for-books.html


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

Date: Mon, 24 Feb 2014 19:29:42 -0800
From: Xho Jingleheimerschmidt <xhoster@gmail.com>
Subject: Re: cookie
Message-Id: <leh5ro$n9u$1@dont-email.me>

On 02/24/14 15:02, George Mpouras wrote:
>
>
> well here is the flow.
>
> 1) at the very start (before the header) I check if the user have the
> cookie and if contain a valid data. In this case the user is redirected
> immediately to the "final" page
>
> 2) In case there is no cookie, or if the cookie data are not valid, The
> user must fill a form.
> If the form data validated successfully, then a cookie must be sent at
> user's browser , and redirected to the final page (here is the
> difficulty is to send the cookie after the submission and validation)

Item 2 is really items 2 and 3, as telling the user to fill out a form, 
and processing the form when/if they do so, are two different things.

Here is a direct translation of your requirements.  You did not specify 
what should happen if the user submitted the form but it was invalid, I 
just threw an fatal error, but you could just redisplay the form.

It is not so nice to have the redirect in two different places, but as I 
said it is direct translation of your requirements.

In particular, if you don't print the header too early, you will not 
have a problem with the header having been printed too early.  Simply 
delay printing the header until until you know you don't need to redirect.

#!/usr/bin/perl
use CGI;
use CGI::Carp qw(fatalsToBrowser);
use strict;

my $cgi=new CGI;

if ($cgi->cookie('valid') eq 'valid') {
   print $cgi->redirect("/final");
   exit;
};

if (not $cgi->param()) {
   print $cgi->header(), $cgi->start_html(), $cgi->start_form();
   print $cgi->textfield('foo');
   print $cgi->submit();
   exit;
};

if ($cgi->param('foo') eq 'valid') {
   print $cgi->redirect(
      -uri => "/final",
      -cookie=>$cgi->cookie('valid','valid')
   );
   exit;
};

die "Form was submitted, but was not valid";


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

Date: Mon, 24 Feb 2014 16:20:24 -0800 (PST)
From: alex.karelas@gmail.com
Subject: Re: Dancer
Message-Id: <e3492b20-7401-4035-9779-cdd472246188@googlegroups.com>

I believe you should use a templating system. Place the lists & textboxes in your template. That's a lot easier than with CGI.

- Alex


On Friday, February 21, 2014 10:49:09 PM UTC+2, George Mpouras wrote:
> I try to evolve a little and start using the Dancer instead of CGI !
> 
> 
> 
> I read some documentation but I still can not find where the drop down 
> 
> lists , textboxes , ... are !
> 
> 
> 
> I am I missing something important or what ?



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

Date: 25 Feb 2014 00:47:33 GMT
From: jt@toerring.de (Jens Thoms Toerring)
Subject: Re: non-working perl script under Windows 2008
Message-Id: <bn27h3Fs4bfU2@mid.uni-berlin.de>

dr.mtarver@gmail.com wrote:
> I'm doing a test Perl script under Windows 2008

> Here is the HTML page that calls it; a simple submit button

> <html>

> <head>
> <meta http-equiv="Content-Type"
> content="text/html; charset=iso-8859-1">
> <title>Untitled </title>
> </head>

> <body>
> <form action="cgi-bin/lambdaperl.cgi" method="POST">
> </form>

> <form method="POST">
>     <p><input type="submit" name="B1" value="Submit"></p>
> </form>
> </body>
> </html>

> Here is the file lambdaperl.cgi

> #!/usr/bin/perl
>  
> print "HTTP/1.0 200 OK\n";
> print "Content-type: text/html\n\n";

Beside what others have told you: these two lines aren't
anything your script is supposed to write out, they are
send by the web server all on it's own before it passes
what your script did output on to the client.

                         Regards, Jens
-- 
  \   Jens Thoms Toerring  ___      jt@toerring.de
   \__________________________      http://toerring.de


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

Date: Mon, 24 Feb 2014 22:49:47 -0700
From: Scott Bryce <sbryce@scottbryce.com>
Subject: Re: non-working perl script under Windows 2008
Message-Id: <lehau1$at7$1@dont-email.me>

On 2/24/2014 5:47 PM, Jens Thoms Toerring wrote:
> dr.mtarver@gmail.com wrote:
>> print "HTTP/1.0 200 OK\n"; print
>> "Content-type: text/html\n\n";
>
> Beside what others have told you: these two lines aren't anything
> your script is supposed to write out, they are send by the web server
> all on it's own before it passes what your script did output on to
> the client.

Actually, no. Your script does need to send them. The web server isn't
going to assume it knows what type of content/response you want to send
back to the browser.



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

Date: Mon, 24 Feb 2014 17:48:16 -0800
From: Jürgen Exner <jurgenex@hotmail.com>
Subject: Re: obj 8-2
Message-Id: <patng9h7b303h6q03fqn0a288gppprhpht@4ax.com>

Keith Thompson <kst-u@mib.org> wrote:
>And that still misses another corner case, namely an empty list.
>
>Which raises the question: what is the maximum value of an empty list?

And exactly because of this any behaviour is acceptable in case of an
emtpy list, including returning nothing, returning some random number,
and even a runtime system error.

>Logically there is none, but in Perl undef is probably a reasonable
>answer -- which means that anything that uses this code will either have
>to be prepared to handle a result of undef, or will need to guarantee
>that the list is never empty.

Yep. That function is only well defined in case of a non-empty list.
Just like a division is only well defined in case of a non-zero devisor.

jue


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

Date: Mon, 24 Feb 2014 22:33:13 -0800
From: "$Bill" <news@todbe.com>
Subject: Re: obj 8-2
Message-Id: <lehdfk$jji$2@dont-email.me>

On 2/24/2014 08:49, John Black wrote:
> In article <lee9mo$gu4$1@dont-email.me>, news@todbe.com says...
>> It's more than enough width to keep things easy to read without
>> sucking up your entire monitor width these days.
>
> I agree for code, but its nice to allow comments, which I like to be all as left justified as
> possible, to extend beyond 80 columns.

Not if your editor window is set to 80 columns.
Just break the comment and continue it.


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

Date: Tue, 25 Feb 2014 00:22:32 +0100
From: "Peter J. Holzer" <hjp-usenet3@hjp.at>
Subject: Re: use strict; use warnings;
Message-Id: <slrnlgnl1o.jnk.hjp-usenet3@hrunkner.hjp.at>

On 2014-02-24 12:00, Marius Gavrilescu <marius@ieval.ro> wrote:
> In Perl, the tenth element of array @something is $something[10]. So the
> warnings are correct — you should write $diamonds[$i] instead of
> @diamonds[$i].

Yes. It is tempting to think of the sigil as denoting the type of the
variable ($ for scalars, @ for arrays, % for hashes), but it's wrong.
The sigil denotes the type of the value: A single element of an array is
a scalar, so it needs a $. several elements form a list, so we use an @. 
You could write @diamonds[$i, $j].

When compared to natural languages, the sigils are similar to articles
or numerals. "$" means "a" and "@" and "%" mean "some" (so Perl has two
kinds of plural).

        hp


-- 
   _  | Peter J. Holzer    | Fluch der elektronischen Textverarbeitung:
|_|_) |                    | Man feilt solange an seinen Text um, bis
| |   | hjp@hjp.at         | die Satzbestandteile des Satzes nicht mehr
__/   | http://www.hjp.at/ | zusammenpaßt. -- Ralph Babel


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

Date: Mon, 24 Feb 2014 17:30:12 -0600
From: Marek Novotny <mach2@hushmail.com>
Subject: Re: use strict; use warnings;
Message-Id: <Lt-dnXVS9oCZS5bOnZ2dnUVZ_tWdnZ2d@supernews.com>

On Mon, 24 Feb 2014 16:10:21 -0600, John Bokma wrote:

> Marek Novotny <mach2@hushmail.com> writes:
> 
>> # Using pop, shift, push, and the starting code below, write a script #
>> that sufficiently "shuffles" a simulated deck of cards before printing
>> # the top five cards. Save this script in your home directory  as #
>> obj10.pl.
> 
> You might to read:
> http://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle on how to
> shuffle.
> 
> Or have a look at how List::Util does this. I normally do
> 
> use List::Util 'shuffle';
> 
> If I need to shuffle something.

I will do this. Thank you!



-- 
Marek Novotny
A member of the Linux Foundation
http://www.linuxfoundation.org


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

Date: Mon, 24 Feb 2014 23:47:55 +0000
From: Ben Morrow <ben@morrow.me.uk>
Subject: Re: use strict; use warnings;
Message-Id: <ba2tta-fs92.ln1@anubis.morrow.me.uk>


Quoth Rainer Weikusat <rweikusat@mobileactivedefense.com>:
> Marius Gavrilescu <marius@ieval.ro> writes:
> > Marek Novotny <mach2@hushmail.com> writes:
> >
> >> When I started to try to use the use strict and warnings, I got warnings 
> >> such as: Scalar value @diamonds[$i] better written as $diamonds[$i] at ./
> >> obj10.pl line 55.
> >>
> >> But the whole point of what I am doing is loading elements into an 
> >> array... So I wanted it as @diamonds, not $diamonds, and so on. 
> >
> > In Perl, the tenth element of array @something is $something[10].
> 
> That would be the eleventh element. The tenth is $something[9].

It's not uncommon, when talking about languages like Perl which index
from 0, to start the ordinals at 'zeroth'.

Ben



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

Date: Mon, 24 Feb 2014 23:55:03 +0000
From: Ben Morrow <ben@morrow.me.uk>
Subject: Re: use strict; use warnings;
Message-Id: <nn2tta-fs92.ln1@anubis.morrow.me.uk>


Quoth Janek Schleicher <janek_schleicher@yahoo.de>:
> Am 24.02.2014 18:50, schrieb Marek Novotny:
> > That they did cover. For whatever reason I like @array = qw( elem1
> > elem2 ...) but I see everyone here has adopted qw/elem1 elem2/. I could
> > easily adapt to this instead. For whatever reason the first is easier for
> > to remember and think of.
> 
> Both are usual but qw/.../ is more common.

/ as delimiter is the default because when using m// you can omit the
'm'.

> Later you'll learn also many operators looking similiar
> q/.../ same as '...'
> qq/.../ same as "..."   (both practical if there a lot of ' or " inside)
> /.../ just for a regexp  [here you can't use anything else than a /]

Oh yes you can...

    m/.../ is a regex. If the delimiter is / or ? you can omit the m. 
    (If the delimiter is ? or ' it has special semantics.)

> qr/.../ also for a regexp that can be reused
> s/.../.../ for substion(s)
> tr/.../.../ for translaterating [like replace all A's with Z's]
> y/.../.../ as synonym for that
> qx/.../ for executing the command inside at the shell or system
> and probably some I forgot also.
> 
> So, most use just /.../ as we Perler are used to it and it tells us on 
> first glance, inside those /.../ is a kind of string that gets operated on.
> 
> When seeing something like (...) or {...}, we expect on first glance 
> that there is code to execute instead.

Personally I use qw() when the construction will extend over several
lines; it makes the close-quote look better. I also tend to use q{} for
(and only for) quoting Perl, because, as you say, a {} block looks like
it should have code inside.

> Indeed you can use allmost most all characters as seperators for all 
> those operators,

Just so you know, the implementation of the -M argument uses a literal
ASCII nul as a delimiter...

Ben



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

Date: 25 Feb 2014 00:38:08 GMT
From: jt@toerring.de (Jens Thoms Toerring)
Subject: Re: use strict; use warnings;
Message-Id: <bn26veFs4bfU1@mid.uni-berlin.de>

Marek Novotny <mach2@hushmail.com> wrote:
> Turns out I didn't read the objective correctly. They did indeed what the 
> deck more shuffled, and they did not want the high value cards, just the 
> top five elements from the array. 

> I did this on the fly, it doesn't contain all the suggestions given here 
> cause I haven't yet really internalized those yet.

> #!/usr/bin/perl
> # file: obj10-1.pl
> # Objective 1:
> #
> # The pop function "pops" off the last element of an array 
> # and returns it. It works like this:
> #
> # $element = pop(@array);
> #
> # The shift function works the same way, but removes an element 
> # from the front of an array.
> #
> # Using pop, shift, push, and the starting code below, write a script 
> # that sufficiently "shuffles" a simulated deck of cards before printing
> # the top five cards. Save this script in your home directory  as 
> # obj10.pl. 
> #
> # The goal of this objective is to familiarize yourself 
> # with these three functions while using loops and to use them 
> # together to rearrange the array but not a randomly shuffled array.

> use strict;
> use warnings;

> my @startingdeck = ("A H","2 H","3 H","4 H","5 H","6 H","7 H","8 H",
>  "9 H","10 H","J H","Q H","K H",
>  "A D","2 D","3 D","4 D","5 D","6 D","7 D","8 D",
>  "9 D","10 D","J D","Q D","K D",
>  "A C","2 C","3 C","4 C","5 C","6 C","7 C","8 C",
>  "9 C","10 C","J C","Q C","K C",
>  "A S","2 S","3 S","4 S","5 S","6 S","7 S","8 S",
>  "9 S","10 S","J S","Q S","K S");

> my $i = 0; my @randomdeck;
> while ($i < 51){
>         $randomdeck[$i] = shift(@startingdeck); $i++;
>         $randomdeck[$i] = pop(@startingdeck); $i++;
> }

You don't necessarily need that '$i' variable and you can also
use push here (as required):

  while ( @startingdeck ) {
      push @randomdeck, shift @startingdeck;
      push @randomdeck, pop   @startingdeck;
  }

But the whole exercise looks rather strange: at first they
write something about 'sufficiently "shuffles"' and a bit
later you have "but not a randomly shuffled". That makes no
sense to me - I've never seem a definition of "sufficiently
but not randomly shuffled" - for me "shuffled" implies some
elememt of at least pseudo-randomness...

What you do, i.e. taking the card from the top and then
the one from the bottom, and repeating the exact same pro-
cedure until the deck is empty, might fit the bill but
there's no way to know for certain.

Perhaps the most you can learn from this isn't something
specific to Perl but that very often the requirements you
get for a programming task are badly inconsistent (or some-
times even violate the principle of causality;-). So now you
can start on the second, hard  part of the task: discuss with
the customer what the requirements actually are supposed to
mean without pissing him off by making him feel stupid;-)

                            Regards, Jens
-- 
  \   Jens Thoms Toerring  ___      jt@toerring.de
   \__________________________      http://toerring.de


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

Date: Tue, 25 Feb 2014 01:04:21 +0000
From: Ben Morrow <ben@morrow.me.uk>
Subject: Re: use strict; use warnings;
Message-Id: <lp6tta-5ma2.ln1@anubis.morrow.me.uk>


Quoth Marek Novotny <mach2@hushmail.com>:
> On Mon, 24 Feb 2014 10:49:21 +0000, Ben Morrow wrote:
> 
> > Have you learned about 'reverse' yet? If not:
> 
> Yes, they did show a fairly okay example of reverse. We had to take /etc/
> passwd and reverse all of the fields. We used split as well. 

There's a subtlety here waiting to trip you up: like many of Perl's
builtins, 'reverse' actually does two different things, depending on the
'context' it's called in. It looks like you were using reverse in scalar
context, which takes a string ("abc") and reverses it ("cba"). I was
referring to reverse in list context, which takes a list ("ab", "cd")
and reverses that ("cd", "ab").

Since you've got a perfectly good collection of introductory Perl books,
written by people who know more about teaching Perl than me, I'm not
going to try to explain 'context' any more than that; but I am going to
recommend that when you get to that chapter in the book you read it
carefully. Context is one of the features of Perl that's not common in
other languages, so beginners are often confused by it.

Ben



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

Date: Mon, 24 Feb 2014 19:56:42 -0600
From: Marek Novotny <mach2@hushmail.com>
Subject: Re: use strict; use warnings;
Message-Id: <F_qdna7c2_nHZZbOnZ2dnUVZ_jqdnZ2d@supernews.com>

On Tue, 25 Feb 2014 00:38:08 +0000, Jens Thoms Toerring wrote:

> Marek Novotny <mach2@hushmail.com> wrote:
>> Turns out I didn't read the objective correctly. They did indeed what
>> the deck more shuffled, and they did not want the high value cards,
>> just the top five elements from the array.
> 
>> I did this on the fly, it doesn't contain all the suggestions given
>> here cause I haven't yet really internalized those yet.
> 
>> #!/usr/bin/perl # file: obj10-1.pl # Objective 1:
>> #
>> # The pop function "pops" off the last element of an array # and
>> returns it. It works like this:
>> #
>> # $element = pop(@array);
>> #
>> # The shift function works the same way, but removes an element # from
>> the front of an array.
>> #
>> # Using pop, shift, push, and the starting code below, write a script #
>> that sufficiently "shuffles" a simulated deck of cards before printing
>> # the top five cards. Save this script in your home directory  as #
>> obj10.pl.
>> #
>> # The goal of this objective is to familiarize yourself # with these
>> three functions while using loops and to use them # together to
>> rearrange the array but not a randomly shuffled array.
> 
>> use strict;
>> use warnings;
> 
>> my @startingdeck = ("A H","2 H","3 H","4 H","5 H","6 H","7 H","8 H",
>>  "9 H","10 H","J H","Q H","K H",
>>  "A D","2 D","3 D","4 D","5 D","6 D","7 D","8 D",
>>  "9 D","10 D","J D","Q D","K D",
>>  "A C","2 C","3 C","4 C","5 C","6 C","7 C","8 C",
>>  "9 C","10 C","J C","Q C","K C",
>>  "A S","2 S","3 S","4 S","5 S","6 S","7 S","8 S",
>>  "9 S","10 S","J S","Q S","K S");
> 
>> my $i = 0; my @randomdeck;
>> while ($i < 51){
>>         $randomdeck[$i] = shift(@startingdeck); $i++;
>>         $randomdeck[$i] = pop(@startingdeck); $i++;
>> }
> 
> You don't necessarily need that '$i' variable and you can also use push
> here (as required):
> 
>   while ( @startingdeck ) {
>       push @randomdeck, shift @startingdeck;
>       push @randomdeck, pop   @startingdeck;
>   }
> 
> But the whole exercise looks rather strange: at first they write
> something about 'sufficiently "shuffles"' and a bit later you have "but
> not a randomly shuffled". That makes no sense to me - I've never seem a
> definition of "sufficiently but not randomly shuffled" - for me
> "shuffled" implies some elememt of at least pseudo-randomness...
> 
> What you do, i.e. taking the card from the top and then the one from the
> bottom, and repeating the exact same pro- cedure until the deck is
> empty, might fit the bill but there's no way to know for certain.
> 
> Perhaps the most you can learn from this isn't something specific to
> Perl but that very often the requirements you get for a programming task
> are badly inconsistent (or some- times even violate the principle of
> causality;-). So now you can start on the second, hard  part of the
> task: discuss with the customer what the requirements actually are
> supposed to mean without pissing him off by making him feel stupid;-)
> 
>                             Regards, Jens

I agree. They really could have worded this a lot better. At first my 
teacher simply said it wasn't shuffled. So all I did was write that 
shuffle code and show it and ask if that would satisfy the requirements 
for shuffling. I printed the shuffled array. To which she said, you're 
done, but don't print the whole array, just the 5 elements. 

So I stopped, and asked, you don't what the highest value cards? Answer 
was no. So I said, well give me 2 seconds, I can write the code for 
printing 5 elements right now. So I did and they said you're done. 

So I didn't bother with refinements. It was actually just an example of a 
shuffle. 

The next objective looks weird. I'll have to read the lesson to answer 
it. It's not something I can answer off the top of my head. There are 15 
of these lessons. I have 3 more quizzes to finish lesson 10. The above is 
just the first objective. 


-- 
Marek Novotny
A member of the Linux Foundation
http://www.linuxfoundation.org


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

Date: Mon, 24 Feb 2014 22:29:07 -0800
From: "$Bill" <news@todbe.com>
Subject: Re: use strict; use warnings;
Message-Id: <lehd7v$jji$1@dont-email.me>

On 2/24/2014 02:21, Justin C wrote:
>
> Have they taught you about random numbers yet? I can't see how it's
> possible to shuffle without random numbers.

'Shuffling' and 'random shuffling' are two different things.

You're 'assuming' he is wanting a random shuffle.


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

Date: Tue, 25 Feb 2014 07:12:37 +0000
From: Henry Law <news@lawshouse.org>
Subject: Re: use strict; use warnings;
Message-Id: <st-dnShds7H435HOnZ2dnUVZ8hOdnZ2d@giganews.com>

On 24/02/14 17:32, Marek Novotny wrote:
> I actually think they are using the wrong word in their description.

I actually think you are smarter than your instructors, even though they 
know more than you do at present.

-- 

Henry Law            Manchester, England


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

Date: Tue, 25 Feb 2014 08:38:16 +0100
From: Mart van de Wege <mvdwege@gmail.com>
Subject: Re: use strict; use warnings;
Message-Id: <86d2ibtzfb.fsf@bors.avalon.lan>

Marek Novotny <mach2@hushmail.com> writes:

> On Mon, 24 Feb 2014 08:31:47 +0100, Mart van de Wege wrote:
>> Single elements of an @array are scalars themselves, so they are
>> addressed as $elem[$index]. The @array[$number] syntax is used to take a
>> *slice* of an array. This might work (it usually does), but can cause
>> hard to find bugs.
>> 
>> Mart
>
> It's really good to see this. I'm actually glad I ran into this. I'll 
> remember this lesson for sure. 
>
It's a hard rule in Perl: array elements are *always* scalars (single
values). Even if they appear to be not (then they are usually
references).

Keep that rule in mind, it will make things easier once you start on
references.

Mart


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

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 4151
***************************************


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