[31180] in Perl-Users-Digest

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

Perl-Users Digest, Issue: 2425 Volume: 11

daemon@ATHENA.MIT.EDU (Perl-Users Digest)
Mon May 18 18:10:01 2009

Date: Mon, 18 May 2009 15:09:27 -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           Mon, 18 May 2009     Volume: 11 Number: 2425

Today's topics:
        Archive::Zip and File::Find errors <gcox@freeuk.com>
    Re: Archive::Zip and File::Find errors <1usa@llenroc.ude.invalid>
    Re: Archive::Zip and File::Find errors <rvtol+usenet@xs4all.nl>
    Re: Archive::Zip and File::Find errors <gcox@freeuk.com>
        beginner array of array  <someone@somewhere.nb.ca>
    Re: beginner array of array  (Greg Bacon)
    Re: beginner array of array  <tadmc@seesig.invalid>
    Re: beginner array of array... thank you all <someone@somewhere.nb.ca>
    Re: beginner array of array... thank you all (Greg Bacon)
    Re: beginner array of array... thank you all <jurgenex@hotmail.com>
    Re: beginner array of array <yankeeinexile@gmail.com>
    Re: beginner array of array <jurgenex@hotmail.com>
    Re: change file names using Archive::Zip <gcox@freeuk.com>
    Re: change file names using Archive::Zip <gcox@freeuk.com>
    Re: comma operator <frank@example.invalid>
    Re: comma operator <cwilbur@chromatico.net>
        Params::Check vs Params::Validate <michaelgang@gmail.com>
    Re: Params::Check vs Params::Validate <ben@morrow.me.uk>
        Digest Administrivia (Last modified: 6 Apr 01) (Perl-Users-Digest Admin)

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

Date: Mon, 18 May 2009 21:59:01 +0100
From: Geoff Cox <gcox@freeuk.com>
Subject: Archive::Zip and File::Find errors
Message-Id: <nqi315lukcqkhsqphfau6gc086rtjqj0r5@4ax.com>

Hello,

I am using the code below to unzip a whole series of files but am
getting an error message "can't open fred.zip: no such file or
directory" - when the file does exist and can be unzipped if it is the
only file in a folder.

Can anyone see an obvious error?

Cheers

Geoff

#!perl 
use warnings; 
use strict; 
use Archive::Zip qw( :ERROR_CODES :CONSTANTS ); 
use File::Find; 

my $dir = 'c:/a-temp2'; 
my @zips; 

find sub { 
    -d and return; 
    /\.zip$/ and push @zips, [$File::Find::dir, $_]; 
}, $dir; 

my $zip = Archive::Zip->new; 

for (@zips) { 
    chdir $_->[0]                or die "can't chdir to $_->[0]: $!"; 
    $zip->read($_->[1]) == AZ_OK or die "can't read $_->[1]"; 
    $zip->extractTree   == AZ_OK or die "can't extract $_->[1]"; 
} 


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

Date: Mon, 18 May 2009 21:25:51 GMT
From: "A. Sinan Unur" <1usa@llenroc.ude.invalid>
Subject: Re: Archive::Zip and File::Find errors
Message-Id: <Xns9C0FB151225F0asu1cornelledu@127.0.0.1>

Geoff Cox <gcox@freeuk.com> wrote in 
news:nqi315lukcqkhsqphfau6gc086rtjqj0r5@4ax.com:

> I am using the code below to unzip a whole series of files but am
> getting an error message "can't open fred.zip: no such file or
> directory" - when the file does exist and can be unzipped if it is the
> only file in a folder.
> 
> Can anyone see an obvious error?

I tried the code you posted by setting $dir = $ENV{TEMP} with two zip 
files and a bunch of other files in there. The files were successfully 
unzipped.

On the other hand, I would have used:

#!/usr/bin/perl

use strict; 
use warnings; 
use Archive::Zip qw( :ERROR_CODES :CONSTANTS ); 
use File::Find; 

my $dir = $ENV{TEMP}; 

find( \&wanted => $dir );

sub wanted {
    return if -d or not /\.zip$/;
    my $archive = $_;

    my $zip = Archive::Zip->new( $archive );
    unless ( $zip ) {
        warn "Cannot read '$File::Find::name'\n";
        return;
    }
    $zip->extractTree == AZ_OK or die "can't extract $_->[1]"; 
} 
__END__


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

comp.lang.perl.misc guidelines on the WWW:
http://www.rehabitation.com/clpmisc/


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

Date: Mon, 18 May 2009 23:52:53 +0200
From: "Dr.Ruud" <rvtol+usenet@xs4all.nl>
Subject: Re: Archive::Zip and File::Find errors
Message-Id: <4a11d8b5$0$191$e4fe514c@news.xs4all.nl>

Geoff Cox wrote:

> I am using the code below to unzip a whole series of files but am
> getting an error message "can't open fred.zip: no such file or
> directory" - when the file does exist and can be unzipped if it is the
> only file in a folder.

Maybe the difference between .zip and .ZIP matters?

-- 
Ruud


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

Date: Mon, 18 May 2009 23:03:46 +0100
From: Geoff Cox <gcox@freeuk.com>
Subject: Re: Archive::Zip and File::Find errors
Message-Id: <gpm315hdp8jptorglou2bru5ur4mdc4rns@4ax.com>

On Mon, 18 May 2009 21:25:51 GMT, "A. Sinan Unur"
<1usa@llenroc.ude.invalid> wrote:

>Geoff Cox <gcox@freeuk.com> wrote in 
>news:nqi315lukcqkhsqphfau6gc086rtjqj0r5@4ax.com:
>
>> I am using the code below to unzip a whole series of files but am
>> getting an error message "can't open fred.zip: no such file or
>> directory" - when the file does exist and can be unzipped if it is the
>> only file in a folder.
>> 
>> Can anyone see an obvious error?
>
>I tried the code you posted by setting $dir = $ENV{TEMP} with two zip 
>files and a bunch of other files in there. The files were successfully 
>unzipped.
>
>On the other hand, I would have used:
>
>#!/usr/bin/perl
>
>use strict; 
>use warnings; 
>use Archive::Zip qw( :ERROR_CODES :CONSTANTS ); 
>use File::Find; 
>
>my $dir = $ENV{TEMP}; 
>
>find( \&wanted => $dir );
>
>sub wanted {
>    return if -d or not /\.zip$/;
>    my $archive = $_;
>
>    my $zip = Archive::Zip->new( $archive );
>    unless ( $zip ) {
>        warn "Cannot read '$File::Find::name'\n";
>        return;
>    }
>    $zip->extractTree == AZ_OK or die "can't extract $_->[1]"; 
>} 
>__END__

many thanks - works a treat!

Cheers

Geoff


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

Date: Mon, 18 May 2009 12:38:26 -0300
From: "Guy" <someone@somewhere.nb.ca>
Subject: beginner array of array 
Message-Id: <4a1180dd$0$23737$9a566e8b@news.aliant.net>

I have a 20KB txt file of data that looks something like this: lines of 
tab-separated fields.
001 jan2009 house
002 jan2008 barn
003 jun2007 trees
004 mar2006 garden
 005 apr2003 lake
006 jul2001 mountain

I'd like to load the entire file in an array and be able to refer to 
specific fields in specific records, such as the 1st field of the 4th item. 
I tried this but it obviously doesn't work. Can anyone show me the trouble? 
It would be much appreciated.
Guy


#!/usr/bin/perl

my $pfil="photos.txt";
my @records;
my $data = \@records;
my $total;

if (open(FIL, $pfil))
    {
    $total=0;
    while (<FIL>)
        {
        $records[$total] = split(/\t/);
        $total++;
        }
    close FIL;
    }

print "$data->[3][0] \n";





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

Date: Mon, 18 May 2009 11:16:45 -0500
From: gbacon@hiwaay.net (Greg Bacon)
Subject: Re: beginner array of array 
Message-Id: <zMydnXE56-dwFIzXnZ2dnUVZ_uGdnZ2d@posted.hiwaay2>

Guy wrote

: I'd like to load the entire file in an array and be able to refer to 
: specific fields in specific records, such as the 1st field of the
: 4th item. 
:
: I tried this but it obviously doesn't work. Can anyone show me the
: trouble? 

Your immediate problem is this line:

    $records[$total] = split(/\t/);

Perl would have given you a hint at least if you'd enabled warnings:

    Use of implicit split to @_ is deprecated at ./guy line 15.

The documentation for split in the perlfunc manpage (one way to
get it is with perldoc -f split) gives another clue:

    In scalar context, returns the number of fields
    found and splits into the "@_" array.

Your assignment to an element of @records calls split in scalar
context, which would return 3 for all lines because each line
has three fields -- not terribly interesting.

So the quick fix is to wrap the call to split in the anoymous
array constructor, but there are more improvements to be had!

    $records[$total] = [ split(/\t/) ];

You may have been using this as a learning exercise. To see how
to make your now-working program more idiomatic, consider a couple
of points.

First, Perl will take care of opening files named on the command
line if you read from <> (referred to as the null filehandle in
the perlop manpage). Also, the lines in photos.txt have regular
structure. The first column appears to be some kind of identifier
or sequence number, the second a date, and the third a place.
Call them what they are instead of using magic numbers!

    #! /usr/bin/perl

    use warnings;
    use strict;

    my %info;
    my @fields = qw( ID DATE PLACE );

    while (<>) {
      my %record;
      @record{@fields} = split;  # list context!

      warn "$0: duplicate '$record{ID}'" if $info{ $record{ID} };
      $info{ $record{ID} } = \%record;
    }

    print $info{"003"}{PLACE}, "\n";

The data structure is different, a hash of hashes instead of a list
of lists. (For more, see the perllol and perldsc manpages.) Use
Data::Dumper to help you visualize it:

    # ...
    print $info{"003"}{PLACE}, "\n";

    use Data::Dumper;
    print Dumper \%info;

Running it, we get

    $ ./gb photos.txt 
    trees
    $VAR1 = {
              '006' => {
                         'ID' => '006',
                         'PLACE' => 'mountain',
                         'DATE' => 'jul2001'
                       },
              '003' => {
                         'ID' => '003',
                         'PLACE' => 'trees',
                         'DATE' => 'jun2007'
                       },
              '002' => {
                         'ID' => '002',
                         'PLACE' => 'barn',
                         'DATE' => 'jan2008'
                       },
              '004' => {
                         'ID' => '004',
                         'PLACE' => 'garden',
                         'DATE' => 'mar2006'
                       },
              '005' => {
                         'ID' => '005',
                         'PLACE' => 'lake',
                         'DATE' => 'apr2003'
                       },
              '001' => {
                         'ID' => '001',
                         'PLACE' => 'house',
                         'DATE' => 'jan2009'
                       }
            };

I hope this helps. Please ask if you have more questions.

Greg
-- 
The great enemy of clear language is insincerity.  When there is a gap between
one's real and one's declared aims, one turns as it were instinctively to long
words and exhausted idioms, like a cuttlefish squirting out ink.
    -- George Orwell


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

Date: Mon, 18 May 2009 11:30:08 -0500
From: Tad J McClellan <tadmc@seesig.invalid>
Subject: Re: beginner array of array 
Message-Id: <slrnh1338g.p3l.tadmc@tadmc30.sbcglobal.net>

Guy <someone@somewhere.nb.ca> wrote:
> I have a 20KB txt file of data that looks something like this: lines of 
> tab-separated fields.
> 001 jan2009 house
> 002 jan2008 barn
> 003 jun2007 trees
> 004 mar2006 garden
>  005 apr2003 lake
> 006 jul2001 mountain


Those are not tab separated.

Those are space separated.


> I'd like to load the entire file in an array and be able to refer to 
> specific fields in specific records, such as the 1st field of the 4th item. 

> #!/usr/bin/perl


    use warnings;
    use strict;


> my $data = \@records;


You do not need any references at that level.


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

my @records;
while ( <DATA> ) {
    chomp;
    push @records, [ split ];
}

print $records[3][0], "\n";

__DATA__
001 jan2009 house
002 jan2008 barn
003 jun2007 trees
004 mar2006 garden
005 apr2003 lake
006 jul2001 mountain
-----------------------


-- 
Tad McClellan
email: perl -le "print scalar reverse qq/moc.noitatibaher\100cmdat/"


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

Date: Mon, 18 May 2009 14:37:12 -0300
From: "Guy" <someone@somewhere.nb.ca>
Subject: Re: beginner array of array... thank you all
Message-Id: <4a119cb2$0$23737$9a566e8b@news.aliant.net>

"Jürgen Exner" <jurgenex@hotmail.com> a écrit dans le message de news: 
rj331595a15mng1ee1454d4aj561pp94oa@4ax.com...

> You are storing the split() result in an array element. Array elements
> are scalars, therefore all you get is the scalar value of that split()
> result which is the number of elements in that result (that's where the
> '3' is coming from in the error message).
>
> Instead you need to create an (anonymous) array with those results.
>
> use warnings; use strict;
>
> my $pfil="photos.txt";
> my @records;
> # my $data = \@records; # you dont' need this reference
> my $total;
>
> if (open(FIL, '<', $pfil)){
>    # better to use 3-arg form of open
>    # you also might want to add a meaningful error message
> #    $total=0; # not needed, see below
>    while (<FIL>){
> #        $records[$total] = split(/\t/);
> #        $total++;
> # use push(), then you don't need to bother with that index $total
>        push @records, [split(/\t/)];
>        # creates an anonymous array and pushes ref to it into @records
>    }
>    close FIL;
> }
>
> $total = @records; #scalar value of an array is its length
> print "$records[3][1] \n";

Thank you all sincerely.
I didn't know that push would push the reference of the split's anonymous 
array. I thought that push would add the new fields of the split at the end 
of @records, creating a long array like:
001    jan2009    house    002    jan2008    barn...

Also, I appreciate the hash advise. It would probably make the script easier 
to understand, in the future at least. But it's really a small script, I'm 
not sure if it would be necessary, but I'll keep that in mind??

You're correct that those were spaces and not tabs, they must have gotten 
converted when I cut & pasted the data.

Guy 




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

Date: Mon, 18 May 2009 12:54:53 -0500
From: gbacon@hiwaay.net (Greg Bacon)
Subject: Re: beginner array of array... thank you all
Message-Id: <1ZidnceEkbhwPYzXnZ2dnUVZ_radnZ2d@posted.hiwaay2>

Guy wrote

: Also, I appreciate the hash advise. It would probably make the
: script easier to understand, in the future at least. But it's really
: a small script, I'm not sure if it would be necessary, but I'll keep
: that in mind??

Cultivate good habits! What do you ultimately want this code to do?

: You're correct that those were spaces and not tabs, they must have
: gotten converted when I cut & pasted the data.

It's an easy, and invisible, mistake. Calling split with no arguments
or using a pattern of " " will split on any whitespace. Compare:

      DB<1> x split /\t/, "a \tb\n"
    0  'a '
    1  'b
    '
      DB<2> x split " ", "a \tb\n"
    0  'a'
    1  'b'

Greg
-- 
What is basically a socialist operation has to bail out the symbol of
American capital. This is where Wall Street has led us. This is what
Alan Greenspan's bubble economy has produced.
    -- Gary North


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

Date: Mon, 18 May 2009 12:43:12 -0700
From: Jürgen Exner <jurgenex@hotmail.com>
Subject: Re: beginner array of array... thank you all
Message-Id: <vde315p1ds9ukb15fgcvaoim5sop94hs7a@4ax.com>

"Guy" <someone@somewhere.nb.ca> wrote:
>I didn't know that push would push the reference of the split's anonymous 
>array. I thought that push would add the new fields of the split at the end 
>of @records, creating a long array like:
>001    jan2009    house    002    jan2008    barn...

It would, if you'd use it like 
	 push @records, split(/\t/);

That's why you have to create the anonymous array using 
	 push @records, [split(/\t/)];

jue


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

Date: Mon, 18 May 2009 11:09:00 -0500
From: Lawrence Statton <yankeeinexile@gmail.com>
Subject: Re: beginner array of array
Message-Id: <m14oviiear.fsf@mac.gateway.2wire.net>

"Guy" <someone@somewhere.nb.ca> writes:

> I have a 20KB txt file of data that looks something like this: lines of 
> tab-separated fields.
> 001 jan2009 house
> 002 jan2008 barn
> 003 jun2007 trees
> 004 mar2006 garden
>  005 apr2003 lake
> 006 jul2001 mountain
>
> I'd like to load the entire file in an array and be able to refer to 
> specific fields in specific records, such as the 1st field of the 4th item. 
> I tried this but it obviously doesn't work. Can anyone show me the trouble? 
> It would be much appreciated.
> Guy
>
>
> #!/usr/bin/perl
>
> my $pfil="photos.txt";
> my @records;
> my $data = \@records;
> my $total;
>
> if (open(FIL, $pfil))
>     {
>     $total=0;
>     while (<FIL>)
>         {
>         $records[$total] = split(/\t/);
>         $total++;
>         }
>     close FIL;
>     }
>
> print "$data->[3][0] \n";

#!/usr/bin/perl
use strict;
use warnings;

my @record;
while (my $line =<DATA>) {
  chomp $line;
  push @record,[split "\t",$line];
}

print "$record[3][1]\n";

__DATA__
001	jan2009	house
002	jan2008	barn
003	jun2007	trees
004	mar2006	garden
005	apr2003	lake
006	jul2001	mountain


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

Date: Mon, 18 May 2009 09:43:39 -0700
From: Jürgen Exner <jurgenex@hotmail.com>
Subject: Re: beginner array of array
Message-Id: <rj331595a15mng1ee1454d4aj561pp94oa@4ax.com>

"Guy" <someone@somewhere.nb.ca> wrote:
>I have a 20KB txt file of data that looks something like this: lines of 
>tab-separated fields.
>001 jan2009 house
>002 jan2008 barn
>003 jun2007 trees
>004 mar2006 garden
> 005 apr2003 lake
>006 jul2001 mountain
>
>I'd like to load the entire file in an array and be able to refer to 
>specific fields in specific records, such as the 1st field of the 4th item. 
>I tried this but it obviously doesn't work. Can anyone show me the trouble? 

You are storing the split() result in an array element. Array elements
are scalars, therefore all you get is the scalar value of that split()
result which is the number of elements in that result (that's where the
'3' is coming from in the error message).

Instead you need to create an (anonymous) array with those results.

>It would be much appreciated.

use warnings; use strict;

my $pfil="photos.txt";
my @records;
# my $data = \@records; # you dont' need this reference
my $total;

if (open(FIL, '<', $pfil)){
    # better to use 3-arg form of open
    # you also might want to add a meaningful error message
#    $total=0; # not needed, see below
    while (<FIL>){
#        $records[$total] = split(/\t/);
#        $total++;
# use push(), then you don't need to bother with that index $total
        push @records, [split(/\t/)];
        # creates an anonymous array and pushes ref to it into @records
    }
    close FIL;
}

$total = @records; #scalar value of an array is its length
print "$records[3][1] \n";


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

Date: Mon, 18 May 2009 21:55:44 +0100
From: Geoff Cox <gcox@freeuk.com>
Subject: Re: change file names using Archive::Zip
Message-Id: <qoi3159ejcnv7ht7tiofq149meno6t45nb@4ax.com>

On Sun, 17 May 2009 19:28:02 -0500, Tad J McClellan
<tadmc@seesig.invalid> wrote:

>I assume that you are guaranteed that each zip archive contains
>exactly one file.

yes 


>> I would like to change 
>>
>> fred.doc to doc-1.doc
>
>>     $zip->read($_->[1]) == AZ_OK or die "can't read $_->[1]"; 
>
>    my($old_name) = $zip->memberNames;
>    (my $new_name = $_->[1]) =~ s/zip$/doc/;
>
>>     $zip->extractTree   == AZ_OK or die "can't extract $_->[1]"; 
>
>
>    rename $old_name, $new_name or die "mv failed $!";

Thanks Tad - will try this.

Cheers

Geoff


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

Date: Mon, 18 May 2009 21:59:36 +0100
From: Geoff Cox <gcox@freeuk.com>
Subject: Re: change file names using Archive::Zip
Message-Id: <r0j315tlakgdbeedg5nofsg857n7hv70h3@4ax.com>

On Mon, 18 May 2009 00:36:11 -0700, Franken Sense
<frank@example.invalid> wrote:


>> use warnings; 
>> use strict; 
>> use Archive::Zip qw( :ERROR_CODES :CONSTANTS ); 
>> use File::Find; 
>> 
>> my $dir = 'c:/a-temp'; 
>> my @zips; 
>> 
>> find sub { 
>>     -d and return; 
>>     /\.zip$/ and push @zips, [$File::Find::dir, $_]; 
>> }, $dir; 
>> 
>> my $zip = Archive::Zip->new; 
>> 
>> for (@zips) { 
>>     chdir $_->[0]                or die "can't chdir to $_->[0]: $!"; 
>>     $zip->read($_->[1]) == AZ_OK or die "can't read $_->[1]"; 
>>     $zip->extractTree   == AZ_OK or die "can't extract $_->[1]"; 
>> }
>
>What's your OS and/or target OS?

Windows XP ..

Cheers

Geoff


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

Date: Mon, 18 May 2009 03:53:40 -0700
From: Franken Sense <frank@example.invalid>
Subject: Re: comma operator
Message-Id: <dfdxhm5q66hk.13hy19emi1u5a$.dlg@40tude.net>

In Dread Ink, the Grave Hand of Nathan Keel Did Inscribe:

> Franken Sense wrote:
> 
>> $comments($counter) = $comment;
> 
> $comments{$counter} = $comment;

Thx.  I couldn't see the difference.
-- 
Frank

I once asked the most fabulous couple I know, Madonna and Guy Ritchie, how
they kept things fresh despite having been married for almost seven months.
'It's a job, Al,' Guy told me. 'We work at it every day.'
~~ Al Franken,


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

Date: Mon, 18 May 2009 11:56:27 -0400
From: Charlton Wilbur <cwilbur@chromatico.net>
Subject: Re: comma operator
Message-Id: <86r5ym2yms.fsf@mithril.chromatico.net>

>>>>> "FS" == Franken Sense <frank@example.invalid> writes:

    FS> In Dread Ink, the Grave Hand of Nathan Keel Did Inscribe:

    >> Franken Sense wrote:
    >> 
    >>> $comments($counter) = $comment;
    >> 
    >> $comments{$counter} = $comment;

    FS> Thx.  I couldn't see the difference.  -- Frank

Consider choosing a different font for your terminal window or your
IDE.  The difference between ( and { is fairly significant.

Charlton


-- 
Charlton Wilbur
cwilbur@chromatico.net


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

Date: Mon, 18 May 2009 02:30:16 -0700 (PDT)
From: david <michaelgang@gmail.com>
Subject: Params::Check vs Params::Validate
Message-Id: <7333603f-4326-4b7f-bcfd-66fa57e6216e@v17g2000vbb.googlegroups.com>

Hi all,

I need your advice about choosing a module for parameter checks.
There are two modules I've found interesting and they are similar:
Params::Check and Params::Validate.
At first glance I would prefer Params::Validate because it has a xs
version. On the other hand Params::Check is in the perl 5.10 core
module list. Does anyone know why the perl core developers prefered
Params::Check on Params::Validate ?

Thanks,
David


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

Date: Mon, 18 May 2009 13:42:16 +0100
From: Ben Morrow <ben@morrow.me.uk>
Subject: Re: Params::Check vs Params::Validate
Message-Id: <8m18e6-mm3.ln1@osiris.mauzo.dyndns.org>


Quoth david <michaelgang@gmail.com>:
> 
> I need your advice about choosing a module for parameter checks.
> There are two modules I've found interesting and they are similar:
> Params::Check and Params::Validate.
> At first glance I would prefer Params::Validate because it has a xs
> version. On the other hand Params::Check is in the perl 5.10 core
> module list. Does anyone know why the perl core developers prefered
> Params::Check on Params::Validate ?

Params::Check is in the core because (and only because) it is required
by CPANPLUS. As a general rule, the intention nowadays is for the perl
core to contain only modules that are tied to a specific version of
perl, or that are required for installing from CPAN. Including a module
in the core isn't any sort of comment on its usefulness.

Of course, there is another rule, which says 'once something goes into
the core, it never comes out again'. (There is work being done to try to
remove this rule, but it's harder than you might think.) This means that
the core contains a fair few modules (like, say, CGI.pm) that really
don't belong there under current policies, but got added at some point
and now can't be removed. This doesn't mean they are considered 'better'
than their alternatives on CPAN.

Ben



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

Date: 6 Apr 2001 21:33:47 GMT (Last modified)
From: Perl-Users-Request@ruby.oce.orst.edu (Perl-Users-Digest Admin) 
Subject: Digest Administrivia (Last modified: 6 Apr 01)
Message-Id: <null>


Administrivia:

#The Perl-Users Digest is a retransmission of the USENET newsgroup
#comp.lang.perl.misc.  For subscription or unsubscription requests, send
#the single line:
#
#	subscribe perl-users
#or:
#	unsubscribe perl-users
#
#to almanac@ruby.oce.orst.edu.  

NOTE: due to the current flood of worm email banging on ruby, the smtp
server on ruby has been shut off until further notice. 

To submit articles to comp.lang.perl.announce, send your article to
clpa@perl.com.

#To request back copies (available for a week or so), send your request
#to almanac@ruby.oce.orst.edu with the command "send perl-users x.y",
#where x is the volume number and y is the issue number.

#For other requests pertaining to the digest, send mail to
#perl-users-request@ruby.oce.orst.edu. Do not waste your time or mine
#sending perl questions to the -request address, I don't have time to
#answer them even if I did know the answer.


------------------------------
End of Perl-Users Digest V11 Issue 2425
***************************************


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