[24617] in Perl-Users-Digest

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

Perl-Users Digest, Issue: 6793 Volume: 10

daemon@ATHENA.MIT.EDU (Perl-Users Digest)
Mon Jul 12 00:05:46 2004

Date: Sun, 11 Jul 2004 21: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, 11 Jul 2004     Volume: 10 Number: 6793

Today's topics:
    Re: estimate passwords <_l_e_n_n_u@-l-e-n-n-u-.de>
    Re: estimate passwords <_l_e_n_n_u@-l-e-n-n-u-.de>
    Re: how perl set envirment variable (J. Romano)
    Re: how perl set envirment variable (J. Romano)
    Re: looping through array <ppayne@somewhere.in.new.zealand.nz>
    Re: looping through array <1usa@llenroc.ude.invalid>
    Re: looping through array <jurgenex@hotmail.com>
    Re: Regexp substitution problem - suggestions? <thoughtful@domain.com.nz>
        Useful one-liners and other short Perl scripts (J. Romano)
    Re: Useful one-liners and other short Perl scripts <krahnj@acm.org>
    Re: Useful one-liners and other short Perl scripts <krahnj@acm.org>
    Re: Useful one-liners and other short Perl scripts <krahnj@acm.org>
    Re: Useful one-liners and other short Perl scripts <krahnj@acm.org>
        Digest Administrivia (Last modified: 6 Apr 01) (Perl-Users-Digest Admin)

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

Date: Mon, 12 Jul 2004 02:13:05 +0200
From: Lennart Freyberg <_l_e_n_n_u@-l-e-n-n-u-.de>
Subject: Re: estimate passwords
Message-Id: <40f1d792@news.pironet-ndh.com>

Hi Walter,

 > Is the input the password itself, or the encrypted password?
Sue me, but it is the password itself. The tools I use to change the 
passwords on microsoft ads and novell 4.x nds can't handle encrypted 
passwords (but the session will be encrypted through https).

 > Is the result to be returned some kind of numerical result
 > such as "It may interesting you to know that your password is
 > about 17% strong", or as in "Someone could probably break your
 > password in about 38 minutes on s good PC"?  Or is the result to
 > be a "pass/fail" result along the lines of "That password isn't
 > complex enough, choose another one!" ?
I am interested in a go/no-go result. The password must fulfill several 
properties:
- minimum (and maybe maximum) length
- alphanumeric (more than one numeric or alphabetic char and not only at 
the beginning or the end of the password)
I guess the most problematic property is, that it must not consist of 
keyword-rows (horizontal like "qwerty" and vertical like "bgt5").
Maybe it's not the strongest password ever, but if it fulfills these 
three properties it is strong enough for us (now).

The first two checks are not that hard to write, but I have no idea how 
to check the keyword-rows. That's why I am searching for a tool.

Unfortunately I need one to run under Microsoft! The tools I use for 
changing the password on Novell NDS only run under Windows and I am not 
interested to split the programs of this project onto several computers 
with several operating systems. (But I am not happy with that! ;-) )

I am sure that most of our users passwords are so weak that I couldn't 
sleep well if I would knew them, so the three properties are something 
like a first step for us...

Thanks a lot,
   Lennart


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

Date: Mon, 12 Jul 2004 02:15:16 +0200
From: Lennart Freyberg <_l_e_n_n_u@-l-e-n-n-u-.de>
Subject: Re: estimate passwords
Message-Id: <40f1d814@news.pironet-ndh.com>

Hi Bob,

I thought I did...
> CPAN is your friend -- did you check there?  You should find things like 
>  the Data::Password::BasicCheck, Data::Password::Check and 
> Data::Password modules -- and probably some more.  One of them might be 
> what you're looking for
 ... but maybe I was too blind

Thanks for the hints,
   Lennart


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

Date: 11 Jul 2004 17:10:57 -0700
From: jl_post@hotmail.com (J. Romano)
Subject: Re: how perl set envirment variable
Message-Id: <b893f5d4.0407111610.5f63efe7@posting.google.com>

> jl_post@hotmail.com (J. Romano) wrote in
> news:b893f5d4.0407110808.569601c9@posting.google.com: 
> >
> >    One problem with these scripts was that they would often add paths
> > to my $PATH environment variable.
> ...
> > So after I ran the one script my professor (or system administrator) 
> > required us to run, my $PATH would have dozens of duplicate paths.

"A. Sinan Unur" <1usa@llenroc.ude> replied in message
news:<Xns95237FF70EBC9asu1cornelledu@132.236.56.8>...
> 
> The solution to that is to start a new shell, run the scripts and do 
> whatever your professor asks of you etc, then exit that shell. 

   Ideally, yes, you are correct there.  But homework assignments are
sometimes less than ideal, where even running the professor's script
does not perfectly set up the environment required for the student to
complete the assignment.  As a result, a lot of perusing through
enviornment variables is needed, and it certainly doesn't help that
the $PATH (and possibly other environment variables) are full of
duplicate entries.

   In this case, Perl excels as a debugging tool (even if used
temporarily) in the ability to set and modify environment variables. 
Perl might be used to set environment variables only in a few rare
cases, but that certainly beats the frustration caused by not turning
in your homework assignment just because you (or your professor)
couldn't get the program to work on your account.

   And the problem might not even ultimately lie with the environment
settings, but any help that Perl can afford me is sure welcome.

   I know that what I just said might sound silly to some people, but
until you've been in that situation yourself, it's hard to gain an
appreciation for it.

   -- Jean-Luc


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

Date: 11 Jul 2004 17:39:25 -0700
From: jl_post@hotmail.com (J. Romano)
Subject: Re: how perl set envirment variable
Message-Id: <b893f5d4.0407111639.3f29cb6f@posting.google.com>

"Jürgen Exner" <jurgenex@hotmail.com> wrote in message news:<2_dIc.41707$Xq4.17783@nwrddc02.gnilink.net>...
> J. Romano wrote:
> > Jürgen Exner pointed out that Perl is often used in batch programming,
> > in which case the commands after the call to the Perl script would run
> > in the parent shell and not have the environment changes.
> 
> Ok, glad to see that you do understand the shortcomings of your approach.
> 
> > But then,
> > if the Perl script was invoked with the "exec" command,
> 
> Why would anyone do that? Typically you want a process to call the Perl
> script to do some task and then call the next script or program to do the
> next task and so on. If you call the sub-scripts using exec() then I
> certainly don't want to manage the control flow of that system.

   Why would anyone do that?  Here's why:  Although it may be
"typical" (as you claim) for a Perl script to be called from a process
to do some task and then have the process call the next script or
program to do the next task and so on, sometimes a user wants to use a
Perl script straight from a Unix shell prompt, as "atypical" as that
may sound.

   To be honest, it's typical for me to run a Perl script straight
from the command line.  That many not be typical for you, but it is
for me, and possibly for many other Perl programmers as well.

   There's nothing wrong with a Perl script being called from a batch
script; there's also nothing wrong with a Perl script not being called
from a batch script.  It might be a rare case, but it does happen, and
that's why someone might want to invoke a Perl script with the "exec"
command.

   I hope this answers your question.

   -- J.


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

Date: 12 Jul 2004 14:34:00 +1200
From: Peter Payne <ppayne@somewhere.in.new.zealand.nz>
Subject: Re: looping through array
Message-Id: <40f1f898@clear.net.nz>

my %h_array2 = map { $_, 1 } @ar_array2;

for ( my $i = 0; $i < scalar( @ar_array1 ); $i++ )
{
    if ( exists( $h_array2{ $ar_array1[$i] } ) )
    {
        print( "  Element \"" 
	       . $ar_array1[$i] 
	       . "\" exists in array2!\n" );
    }
}

Ooh ooh my head hurts, ooh that was SOOO hard, oh oh oh why did
I ever become a programmer?? I never expected to have to THINK
for myself.. cruel world..

svenne <bobsmith@[no-thankyou-very-much]jippii.fi> wrote:
> this is trivvial question but how do you compare existense of elements intwo
> arrays?, that is I want to compare two arrays and check the existense of
> the first array's elements in the second array, 
> 
> one line of code if possible...
> 
> any advice much appreciated, thank you.
> /G


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

Date: 12 Jul 2004 02:45:03 GMT
From: "A. Sinan Unur" <1usa@llenroc.ude.invalid>
Subject: Re: looping through array
Message-Id: <Xns9523E76F01831asu1cornelledu@132.236.56.8>

Peter Payne <ppayne@somewhere.in.new.zealand.nz> wrote in
news:40f1f898@clear.net.nz: 

[ top post fixed - do not top post ]

> svenne <bobsmith@[no-thankyou-very-much]jippii.fi> wrote:

>> this is trivvial question but how do you compare existense of
>> elements intwo arrays?, that is I want to compare two arrays and
>> check the existense of the first array's elements in the second
>> array, 
>
> my %h_array2 = map { $_, 1 } @ar_array2;
> 
> for ( my $i = 0; $i < scalar( @ar_array1 ); $i++ )
> {
>     if ( exists( $h_array2{ $ar_array1[$i] } ) )
>     {
>         print( "  Element \"" 
>             . $ar_array1[$i] 
>             . "\" exists in array2!\n" );
>     }
> }
> 
> why did I ever become a programmer?? 

Good question. Why don't you take a look at perldoc -q intersection?


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



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

Date: Mon, 12 Jul 2004 02:46:54 GMT
From: "Jürgen Exner" <jurgenex@hotmail.com>
Subject: Re: looping through array
Message-Id: <yYmIc.12999$ju1.8775@nwrddc04.gnilink.net>

[Please do not top-post; trying to correct]
Peter Payne wrote:
> svenne <bobsmith@[no-thankyou-very-much]jippii.fi> wrote:
>> this is trivvial question but how do you compare existense of
>> elements intwo arrays?, that is I want to compare two arrays and
>> check the existense of the first array's elements in the second
>> array,
>
> my %h_array2 = map { $_, 1 } @ar_array2;
> for ( my $i = 0; $i < scalar( @ar_array1 ); $i++ )

Why this C-style loop? There is no need to trace the index!
Just do
    for (@ar_array1) {

> {
>     if ( exists( $h_array2{ $ar_array1[$i] } ) )

Then this line becomes an easier
    if ( exists( $h_array2{ $_ } ) )

>     {
>         print( "  Element \""
>        . $ar_array1[$i]
>        . "\" exists in array2!\n" );

And the whole print statement become a simple
    print "Element \"$_\" exists in array2!\n";

>     }
> }
>
> Ooh ooh my head hurts, ooh that was SOOO hard, oh oh oh why did
> I ever become a programmer?? I never expected to have to THINK
> for myself.. cruel world..

However, the best solution is still the answer in the FAQ: "perldoc -q
intersection"

jue




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

Date: 12 Jul 2004 15:56:11 +1200
From: Thoughtful <thoughtful@domain.com.nz>
Subject: Re: Regexp substitution problem - suggestions?
Message-Id: <40f20bdb@clear.net.nz>

Mr policeman Joe, why are you being so nasty to this poor programmer?

Firstly, the owner of domain.com is an idiot if he thinks he won't be
spammed senseless.

Secondly, the programmer is aware of the more pressing issue of
catching (and killing) the criminals that spam (note that I believe
the only way to deal with spam is to use a gun, FBI stop tracking
bin-laden, track and kill the spammers).

Thirdly, Mr policeman Joe is stupid enough to perpetuate the virtual
crime in his head by quoting the original programmer. And, if Mr
super-smart policeman Joe is so smart then why did he merely change
the @ symbols to at? As any elementary programmer knows it would be
trivial to write a harvesting script using a simple
  if ( $_ =~ m/mailto:                           # find a mailto tag
               \s*(\S+)\s*                       # username
	       (at|@)\s*                         # @
	       ([A-Za-z1-9._-]+?\.(com|net|org)) # domain
	       (\.?[\n\r]|[^A-Za-z1-9._-])/ix )  # end-of-address
  {
      spam_senseless( "$1@$3" );
  }
  
So in summary, Mr policeman Joe, shut up you stupid senseless
excuse for a dumb load of unthinking, inconsiderate, New York
streetside smell de jour.

Joe Smith <Joe.Smith@inwap.com> wrote:
>> E-mail me at:  mailto:inquiries at domain.com
>> E-mail me at:  mailto:inquiries at domain.com.
>> E-mail me at:  mailto:inquiries at domain again.
>> Try this:      mailto:addr at domain.com?Subject=Testing-blues
> 
> Why are you carrying a grudge against the owner of domain.com?



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

Date: 11 Jul 2004 17:22:18 -0700
From: jl_post@hotmail.com (J. Romano)
Subject: Useful one-liners and other short Perl scripts
Message-Id: <b893f5d4.0407111622.3142ec38@posting.google.com>

Dear Perl Community,

   Over the years of using Perl I discovered some very useful
one-liners that I thought I'd share with the rest of the Perl
community.  Some of these one-liners will only work in Unix, so I've
supplied the equivalent DOS one-liner (for Win32 systems) where
possible.

   I realize that in many cases there are other ways of doing the same
thing.  In some cases, I used one method for a long time before I
discovered a shorter way of doing the same thing.  In such cases, I've
included both techniques here.

   But if you think you have a better way of doing something I've
listed here, by all means, share it!  And if you have any of your own
useful one-liners, feel free to share those as well.


   This post is divided into three sections:

* USEFUL ONE-LINERS:  One-liners that have been useful
                      to me in the past
* MORE USEFUL ONE-LINERS:  One-liners that I've never
                           had the need to use, but might
                           be helpful to someone else
* SHORT FUN PROGRAMS:  A couple of cute programs


SECTION 1:  USEFUL ONE-LINERS

All of the one-liners in this section have been useful to me at one
time or another in the past.


Everyone should know this one, but just in case they don't, here's how
to find the current date in epoch seconds:

 perl -le "print time"


These next few lines explain how to extract the date/time from a value
of epoch seconds (like 1234567890).  Many times over the course of
debugging C/C++ programs I've used this technique to find out what
date was being used, making the following line the most useful Perl
one-liner I've ever used:

 perl -le "print scalar gmtime 1234567890"

Here's how to find the current date and time:

 perl -le "print scalar gmtime time"

Here's how to find the so-called "beginning of time":

 perl -le "print scalar gmtime 0"

Here's how to find the date of the one-billionth second after time 0:

 perl -le "print scalar gmtime 1e9"

This gives the date of the fabled "end of time":

 perl -le "print scalar gmtime 0x7f_ff_ff_ff"


Many times I've wanted to convert a hexadecimal number (like 0xface)
into decimal:

 perl -le "print 0xface"

And other times I needed to convert a decimal number (like 255) into
hexadecimal:

# Unix:
 perl -e 'printf "0x%x\n", 255'
# DOS:
 perl -e "printf qq/0x%x\n/, 255"


I do a lot of work with binary files.  Sometimes I need to find the
value of a specific bit in a binary file.  Here is how to convert a
binary file into its binary 0s and 1s:

# Unix:
 perl -l -0777 -ne 'print unpack("B*", $_)' binary_file
# DOS (using ActiveState Perl 5.8 or later):
 perl -l -Mopen=IO,:raw -0777 -ne "print unpack('B*', $_)" binary_file

(Note:  Replace the 'B*' packstring with 'H*' to see the hexadecimal
equivalent.)


Here's a handy one for determining if your machine is little-endian or
big-endian:

 perl -le "print((ord pack 's', 1) ? 'little' : 'big', '-endian')"

Note:  "perldoc -f pack" describes another way for determining
endian-ness by using $Config{byteorder}.  Here is a solution that uses
that method (note:  I use '@' instead of '$' so that this one-liner
will run under both DOS and Unix):

 perl -MConfig -le "print @Config{byteorder}"

The string "1234" or "12345678" signifies little-endian;  "4321" or
"87654321" signifies big-endian.  If you get something out of order,
it means that your machine is netiher big- nor little-endian!


Use this to find out the size of an integer (in bytes):

 perl -le "print length pack 'i', 0"

Note:  "perldoc -f pack" describes another way for determining this
using $Config{intsize}.  Here is a solution that uses that method
(note:  I use '@' instead of '$' so that this one-liner will run under
both DOS and Unix):

 perl -MConfig -le "print @Config{intsize}"


Here is a small Perl interactive interpreter:

# Unix:
 perl -ne 'eval; print "$@\n> "'
# DOS:
 perl -ne "eval; print qq/$@\n> /"

After typing out this one-liner, hit ENTER twice to see the
interactive interpreter prompt.  Type "exit" to quit the interpreter.

Note:  Many readers know that "perl -de 1" will do just about the same
thing, and it's more flexible with more advantages (and quicker to
type).  That's true, but remember that to exit "perl -de 1" you must
type "q", not "exit".


Use this to count number of characters in a string (not counting the
newline):

 perl -lne "chomp; print tr///c"


This removes duplicate entries in the PATH environment variable:
(Note:  this only works on Unix)

 exec perl -e'$ENV{PATH}=join":",grep{not$seen{$_}++}split/:/,$ENV{PATH};exec$ENV{SHELL}'

Note that this spawns a child shell (and so has whatever advantages
and disadvantages that go with it).  This one-liner is meant to be run
from an interactive shell and will NOT work from inside another
script.  Therefore, this may not be suitable for all purposes.


SECTION 2:  MORE USEFUL ONE-LINERS

The one-liners in this section might be useful to someone, but I can't
say I've ever really needed them very badly myself.


Convert tabs into spaces (assuming a tabstop is 8 spaces):

# Unix:
 perl -MText::Tabs -ne '$tabstop=8; print expand($_)'
# DOS:
 perl -MText::Tabs -ne "$tabstop=8; print expand($_)"


Sort a list of items (such as songs, foods, or books) in order of
preference:

# Unix:
 perl -e 'print sort{print "1. ${a}2. ${b}Preference: ";<>*2-3}<>'
# DOS:
 perl -e "print sort{print qq/1. ${a}2. ${b}Preference: /;<>*2-3}<>"

To try this out, run it and type:
   chocolate
   brussel sprouts
   bread
and hit CTRL-D (or CTRL-Z and ENTER if you're using DOS).  You will be
asked a series of questions asking what you prefer.  (Hint:  to say
that you like both the same, you can type a value of "1.5".)

This sort works provided that you are consistent (no changing your
mind halfway through the sort) and that you don't have any circular
preferences (an example of a circular preference is:  I like book A
more than book B, book B more than book C, and book C more than book
A).


SECTION 3:  SHORT FUN PROGRAMS

Here are some fun short programs and one-liners that do nothing
particularly useful, but are just for fun.


Here's a program that I like to call the "Spooky Writer":

# Unix:
 perl -e'$|=1;for(split//,join"",<>){print;select(undef,undef,undef,rand(.5))}'
# DOS:
 perl -e"$|=1;for(split//,join'',<>){print;select(undef,undef,undef,rand(.5))}"

Try and figure out what it does.  If you have trouble figuring it out,
try running the one-liner, and type a few lines from your favorite
poem.  Then hit CTRL-D (or CTRL-Z and ENTER if you're using DOS), and
watch what happens!  Spooky, eh?  You can run the JAPH at the bottom
of this post to see a variation of this one-liner.

If you're still having trouble figuring this code out, try the
following short script which does the same thing but is easier to
understand:

#!/usr/bin/perl -w
use strict;

# Set the maximum wait in seconds.
# The average wait will be half that:
my $maxWait = 0.50;  # in seconds

$| = 1;  # autoflush

# Get all input:
my @inputLines = <>;
my $input = join('', @inputLines);
my @charList = split(//, $input);

# @charList now holds an array of characters of all the input

# Loop through each character, printing the character and
# then waiting for a short time:
foreach my $char (@charList)
{
   print $char;

   # Pause for a short (and random) time:
   my $pauseTime = rand($maxWait);
   select(undef, undef, undef, $pauseTime);
}
__END__


And finally, for the last program I present a self-replicating
program!  This entire program is six lines long:

#!/usr/bin/perl
print((@d=<DATA>)x2);
__END__
#!/usr/bin/perl
print((@d=<DATA>)x2);
__END__

A self-replicating program is a program that, when run, produces its
code as output.  These programs are tricky to write, because if one
character is changed, usually one or more other characters have to be
changed as well.

In perl, you can run a self-replicating program like this:

perl repeat.pl | perl | perl | perl | perl

and no matter how many "| perl" instances you write, the output will
still be the same!

Unfortunately, I couldn't come up with a self-replicating Perl
one-liner, but if someone knows of one, I'd like to see it!

If you think the above six-line program is difficult to understand,
here's essentially the same program, but easier to follow (note: the
entire program is 12 lines long):

#!/usr/bin/perl -w
use strict;
my @d = <DATA>;  # get half of this script
print @d;  # print the top half of this script
print @d;  # print the bottom half of this script
__END__
#!/usr/bin/perl -w
use strict;
my @d = <DATA>;  # get half of this script
print @d;  # print the top half of this script
print @d;  # print the bottom half of this script
__END__


   Well, that's it for useful one-liners and small Perl programs.  I
hope you enjoyed them.  If you have any one-liners that have been
useful to you, feel free to share them.  I'd love to see them.

   Happy Perling,

   Jean-Luc Romano

--
# JAPH (for Unix):
 perl -e'$|=1;select($J,$L,$R,rand.7*print)for split//,"Just another
Perl hacker\n"'
# JAPH (for DOS):
 perl -e"$|=1;select($J,$L,$R,rand.7*print)for split//,qq/Just another
Perl hacker\n/"


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

Date: Mon, 12 Jul 2004 01:21:51 GMT
From: "John W. Krahn" <krahnj@acm.org>
Subject: Re: Useful one-liners and other short Perl scripts
Message-Id: <40F1E7AB.313F6996@acm.org>

"J. Romano" wrote:
> 
> Use this to count number of characters in a string (not counting the
> newline):
> 
>  perl -lne "chomp; print tr///c"

The chomp is superfluous as the -l switch does a chomp for you:

perl -lne "print y///c"


And if you want to include the newline in the count:

perl -ne "print y///c,$/"



John
-- 
use Perl;
program
fulfillment


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

Date: Mon, 12 Jul 2004 01:24:36 GMT
From: "John W. Krahn" <krahnj@acm.org>
Subject: Re: Useful one-liners and other short Perl scripts
Message-Id: <40F1E851.6A47CB20@acm.org>

"J. Romano" wrote:
> 
> Everyone should know this one, but just in case they don't, here's how
> to find the current date in epoch seconds:
> 
>  perl -le "print time"

If you have GNU date:

date +%s


John
-- 
use Perl;
program
fulfillment


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

Date: Mon, 12 Jul 2004 01:36:00 GMT
From: "John W. Krahn" <krahnj@acm.org>
Subject: Re: Useful one-liners and other short Perl scripts
Message-Id: <40F1EAFC.7536B8B@acm.org>

"J. Romano" wrote:
> 
> This removes duplicate entries in the PATH environment variable:
> (Note:  this only works on Unix)
> 
>  exec perl -e'$ENV{PATH}=join":",grep{not$seen{$_}++}split/:/,$ENV{PATH};exec$ENV{SHELL}'

Note that won't work with csh as it uses ' ' instead of ':' as a
separator.


John
-- 
use Perl;
program
fulfillment


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

Date: Mon, 12 Jul 2004 01:50:25 GMT
From: "John W. Krahn" <krahnj@acm.org>
Subject: Re: Useful one-liners and other short Perl scripts
Message-Id: <40F1EE5D.17CAA01A@acm.org>

"J. Romano" wrote:
> 
> Here's a program that I like to call the "Spooky Writer":
> 
> # Unix:
>  perl -e'$|=1;for(split//,join"",<>){print;select(undef,undef,undef,rand(.5))}'

You can save a few key strokes like this:

perl -e'$|=$/=\1;print,select undef,undef,undef,rand.5for<>'


:-)

John
-- 
use Perl;
program
fulfillment


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

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


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