[31756] in Perl-Users-Digest

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

Perl-Users Digest, Issue: 3020 Volume: 11

daemon@ATHENA.MIT.EDU (Perl-Users Digest)
Tue Jul 6 11:26:54 2010

Date: Tue, 6 Jul 2010 08:26:15 -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           Tue, 6 Jul 2010     Volume: 11 Number: 3020

Today's topics:
    Re: FAQ 5.29 How can I read in an entire file all at on <whynot@pozharski.name>
    Re: FAQ 5.29 How can I read in an entire file all at on <uri@StemSystems.com>
    Re: FAQ 5.29 How can I read in an entire file all at on <brian.d.foy@gmail.com>
    Re: FAQ 5.29 How can I read in an entire file all at on <uri@StemSystems.com>
    Re: FAQ 5.29 How can I read in an entire file all at on <whynot@pozharski.name>
    Re: FAQ 5.38 Why does Perl let me delete read-only file <nospam-abuse@ilyaz.org>
    Re: FAQ 5.38 Why does Perl let me delete read-only file <ben@morrow.me.uk>
    Re: FAQ 5.38 Why does Perl let me delete read-only file <hjp-usenet2@hjp.at>
        how to pass a function name to a function, and have it  <nick@maproom.co.uk>
    Re: how to pass a function name to a function, and have <peter@makholm.net>
    Re: how to pass a function name to a function, and have <ben@morrow.me.uk>
    Re: how to pass a function name to a function, and have <spamtrap@shermpendley.com>
    Re: How to use $string=~s/(whatever)/${$i}/; with stric <derykus@gmail.com>
    Re: How to use $string=~s/(whatever)/${$i}/; with stric <derykus@gmail.com>
        Digest Administrivia (Last modified: 6 Apr 01) (Perl-Users-Digest Admin)

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

Date: Mon, 05 Jul 2010 10:35:34 +0300
From: Eric Pozharski <whynot@pozharski.name>
Subject: Re: FAQ 5.29 How can I read in an entire file all at once?
Message-Id: <slrni332q7.oc0.whynot@orphan.zombinet>

with <87mxu7j08z.fsf@quad.sysarch.com> Uri Guttman wrote:
>>>>>> "PS" == PerlFAQ Server <brian@theperlreview.com> writes:
*SKIP*
>  PS>             {
>  PS>             local $/;
>  PS>             open my $fh, '<', $file or die "can't open $file: $!";
>  PS>             $var = <$fh>;
>  PS>             }
>
>  PS>     That temporarily undefs your record separator, and will automatically
>  PS>     close the file at block exit. If the file is already open, just use
>  PS>     this:
>
>  PS>             $var = do { local $/; <$fh> };
>
> you missed the coolest variant:
>
> 	my $text = do { local( @ARGV, $/) = $file ; <> };
>
> no open needed!
>
> other than file::slurp not being in core (and it should be! :), there is
> no reason to show the $/ = undef trick. it is always slower and more
> obscure then calling read_file (which also does better error handling
> and has more options).
>
>  PS>     For ordinary files you can also use the read function.
>
>  PS>             read( $fh, $var, -s $fh );
>
> might as well use sysread as it is faster and has the same api. read is
> almost never needed unless you are doing block reads on a file and
> mixing in line reads (they share the perl stdio). 

Please reconsider your 'always slower':

	#!/usr/bin/perl

	use strict;
	use warnings;
	use Benchmark qw{ cmpthese timethese };

	use File::Slurp;
	my $fname = '/etc/passwd';
	read_file $fname;

	cmpthese timethese -5, {
	  code00 => sub { my $aa = read_file $fname; },
	  code01 => sub { local $/; open my $fh, '<', $fname or die $!; my $aa = <$fh>; },
	  code02 => sub { local( @ARGV, $/ ) = $fname; my $aa = <>; },
	  code03 => sub { open my $fh, '<', $fname or die $!; defined read $fh, my $aa, -s $fh or die $!; },
	  code04 => sub { open my $fh, '<', $fname or die $!; defined sysread $fh, my $aa, -s $fh or die $!; },
	};

	__END__
	Benchmark: running code00, code01, code02, code03, code04 for at least 5 CPU seconds...
	    code00:  5 wallclock secs ( 3.34 usr +  2.01 sys =  5.35 CPU) @ 31214.95/s (n=167000)
	    code01:  5 wallclock secs ( 2.82 usr +  2.45 sys =  5.27 CPU) @ 41757.50/s (n=220062)
	    code02:  5 wallclock secs ( 2.58 usr +  2.68 sys =  5.26 CPU) @ 43446.01/s (n=228526)
	    code03:  5 wallclock secs ( 2.60 usr +  2.69 sys =  5.29 CPU) @ 47371.08/s (n=250593)
	    code04:  4 wallclock secs ( 2.36 usr +  3.02 sys =  5.38 CPU) @ 52458.92/s (n=282229)
		  Rate code00 code01 code02 code03 code04
	code00 31215/s     --   -25%   -28%   -34%   -40%
	code01 41757/s    34%     --    -4%   -12%   -20%
	code02 43446/s    39%     4%     --    -8%   -17%
	code03 47371/s    52%    13%     9%     --   -10%
	code04 52459/s    68%    26%    21%    11%     --

And that's for s{/etc/passwd}{/boot/vmlinuz}

	Benchmark: running code00, code01, code02, code03, code04 for at least 5 CPU seconds...
	    code00:  5 wallclock secs ( 1.45 usr +  3.96 sys =  5.41 CPU) @ 223.84/s (n=1211)
	    code01:  5 wallclock secs ( 2.08 usr +  3.06 sys =  5.14 CPU) @ 365.18/s (n=1877)
	    code02:  6 wallclock secs ( 2.16 usr +  3.00 sys =  5.16 CPU) @ 366.28/s (n=1890)
	    code03:  6 wallclock secs ( 2.12 usr +  3.24 sys =  5.36 CPU) @ 372.20/s (n=1995)
	    code04:  5 wallclock secs ( 0.12 usr +  5.16 sys =  5.28 CPU) @ 583.14/s (n=3079)
		Rate code00 code01 code02 code03 code04
	code00 224/s     --   -39%   -39%   -40%   -62%
	code01 365/s    63%     --    -0%    -2%   -37%
	code02 366/s    64%     0%     --    -2%   -37%
	code03 372/s    66%     2%     2%     --   -36%
	code04 583/s   161%    60%    59%    57%     --

Although, braian, please consider cleaning up that entry a bit.  Those
who can read would find their way;  those who can't wouldn't read that
anyway.

-- 
Torvalds' goal for Linux is very simple: World Domination
Stallman's goal for GNU is even simpler: Freedom


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

Date: Mon, 05 Jul 2010 11:52:59 -0400
From: "Uri Guttman" <uri@StemSystems.com>
Subject: Re: FAQ 5.29 How can I read in an entire file all at once?
Message-Id: <8739vy7wo4.fsf@quad.sysarch.com>

>>>>> "EP" == Eric Pozharski <whynot@pozharski.name> writes:

  EP> Please reconsider your 'always slower':

try the pass by scalar reference method of read_file. and check out the
much more comprehensive benchmark script that comes with the module. and
that was also redone in an unreleased version you can find on git at
perlhunter.com/git. for one thing it uses better names so you can see
what the results mean.

uri

-- 
Uri Guttman  ------  uri@stemsystems.com  --------  http://www.sysarch.com --
-----  Perl Code Review , Architecture, Development, Training, Support ------
---------  Gourmet Hot Cocoa Mix  ----  http://bestfriendscocoa.com ---------


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

Date: Mon, 05 Jul 2010 13:31:09 -0500
From: brian d foy <brian.d.foy@gmail.com>
Subject: Re: FAQ 5.29 How can I read in an entire file all at once?
Message-Id: <050720101331098603%brian.d.foy@gmail.com>

In article <87mxu7j08z.fsf@quad.sysarch.com>, Uri Guttman
<uri@StemSystems.com> wrote:


> other than file::slurp not being in core (and it should be! :), there is
> no reason to show the $/ = undef trick.

That's a pretty big reason though.


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

Date: Mon, 05 Jul 2010 15:28:27 -0400
From: "Uri Guttman" <uri@StemSystems.com>
Subject: Re: FAQ 5.29 How can I read in an entire file all at once?
Message-Id: <87iq4t684k.fsf@quad.sysarch.com>

>>>>> "bdf" == brian d foy <brian.d.foy@gmail.com> writes:

  bdf> In article <87mxu7j08z.fsf@quad.sysarch.com>, Uri Guttman
  bdf> <uri@StemSystems.com> wrote:


  >> other than file::slurp not being in core (and it should be! :), there is
  >> no reason to show the $/ = undef trick.

  bdf> That's a pretty big reason though.

the sys/open followed by sysread and -s is faster and less obscure. you
already show that. the undef $/ is just poor coding imo. at least
comment on the various qualities of the methods. my comments on the mmap
are on point - it doesn't save ram and only wins for random
access. tie::file is ok for some things but for a simple
read/modify/write it is just as simple and faster to
slurp/mung/write. you can work on an array in both cases. one day i will
release file::slurp with edit_file and edit_file_lines which will make
that process even easier and faster.

uri

-- 
Uri Guttman  ------  uri@stemsystems.com  --------  http://www.sysarch.com --
-----  Perl Code Review , Architecture, Development, Training, Support ------
---------  Gourmet Hot Cocoa Mix  ----  http://bestfriendscocoa.com ---------


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

Date: Tue, 06 Jul 2010 11:53:50 +0300
From: Eric Pozharski <whynot@pozharski.name>
Subject: Re: FAQ 5.29 How can I read in an entire file all at once?
Message-Id: <slrni35rov.3da.whynot@orphan.zombinet>

with <8739vy7wo4.fsf@quad.sysarch.com> Uri Guttman wrote:
>>>>>> "EP" == Eric Pozharski <whynot@pozharski.name> writes:
>
>  EP> Please reconsider your 'always slower':
>
> try the pass by scalar reference method of read_file.

	#!/usr/bin/perl

	use strict;
	use warnings;
	use Benchmark qw{ cmpthese timethese };

	use File::Slurp;
	my $fn = '/etc/passwd';

	cmpthese timethese -5, {
	  code00 => sub { my $aa = read_file $fn; },
	  code01 => sub { my $aa = read_file $fn, scalar_ref => 1; },
	};

	__END__
	Benchmark: running code00, code01 for at least 5 CPU seconds...
	    code00:  6 wallclock secs ( 3.61 usr +  1.67 sys =  5.28 CPU) @ 33617.23/s (n=177499)
	    code01:  6 wallclock secs ( 3.74 usr +  1.52 sys =  5.26 CPU) @ 33122.05/s (n=174222)
		  Rate code01 code00
	code01 33122/s     --    -1%
	code00 33617/s     1%     --

What?  However...  (s{/etc/passwd}{/boot/vmlinuz})

	Benchmark: running code00, code01 for at least 5 CPU seconds...
	    code00:  6 wallclock secs ( 1.57 usr +  3.86 sys =  5.43 CPU) @ 222.65/s (n=1209)
	    code01:  6 wallclock secs ( 0.23 usr +  5.04 sys =  5.27 CPU) @ 319.92/s (n=1686)
		Rate code00 code01
	code00 223/s     --   -30%
	code01 320/s    44%     --

That's pretty impressive.  Or not?  Look, if someone is going to play
with B<read_file>'s options shouldn't he be going with B<sysread>
instead?  I hardly can imagine that someone would try to make
B<read_file> to be as fast as possible instead of making slurping itself
fast.

> and check out the much more comprehensive benchmark script that comes
> with the module.

Yeah, cool stuff.  Although I wasn't told beforehand to make terminal
250 columns wide.  So it's still unreadable.

> and that was also redone in an unreleased version you can find on git
> at perlhunter.com/git.

Concentrate.  Talking about 'unreleased' is lame.


-- 
Torvalds' goal for Linux is very simple: World Domination
Stallman's goal for GNU is even simpler: Freedom


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

Date: Mon, 5 Jul 2010 20:43:40 +0000 (UTC)
From: Ilya Zakharevich <nospam-abuse@ilyaz.org>
Subject: Re: FAQ 5.38 Why does Perl let me delete read-only files?  Why does "-i" clobber protected files?  Isn't this a bug in Perl?
Message-Id: <slrni34gvs.r4d.nospam-abuse@powdermilk.math.berkeley.edu>

On 2010-07-05, Peter J. Holzer <hjp-usenet2@hjp.at> wrote:
> This answer is Unix-centric. AFAIK on Windows the permissions on the
> file are also considered, plus a few other circumstances (file open,
> locked, ...). So while I very much endorse the first sentence "learn how
> your filesystem works", I would qualify the rest with "On Unix systems
> ..." or maybe "On POSIX-conforming file systems ..." (Frankly, I don't
> know how NTFS on Linux or ext3 on Windows behave).

Does POSIX specify behaviour of filesystems at all?

Thanks,
Ilya


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

Date: Mon, 5 Jul 2010 21:58:42 +0100
From: Ben Morrow <ben@morrow.me.uk>
Subject: Re: FAQ 5.38 Why does Perl let me delete read-only files?  Why does "-i" clobber protected files?  Isn't this a bug in Perl?
Message-Id: <2lt9g7-oi82.ln1@osiris.mauzo.dyndns.org>


Quoth Ilya Zakharevich <nospam-abuse@ilyaz.org>:
> On 2010-07-05, Peter J. Holzer <hjp-usenet2@hjp.at> wrote:
> > This answer is Unix-centric. AFAIK on Windows the permissions on the
> > file are also considered, plus a few other circumstances (file open,
> > locked, ...). So while I very much endorse the first sentence "learn how
> > your filesystem works", I would qualify the rest with "On Unix systems
> > ..." or maybe "On POSIX-conforming file systems ..." (Frankly, I don't
> > know how NTFS on Linux or ext3 on Windows behave).
> 
> Does POSIX specify behaviour of filesystems at all?

From SUSv3:

    The unlink() function shall fail and shall not unlink the file if:

    [EACCES]
        Search permission is denied for a component of the path prefix,
        or write permission is denied on the directory containing the
        directory entry to be removed.

No mention of the permissions of the file itself, though POSIX does
permit systems to define 'additional access control mechanisms' which
further restrict the access permissions. Conceivably one of these could
forbid unlinking a read-only file.

Ben



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

Date: Mon, 5 Jul 2010 15:41:57 +0200
From: "Peter J. Holzer" <hjp-usenet2@hjp.at>
Subject: Re: FAQ 5.38 Why does Perl let me delete read-only files?  Why does "-i" clobber protected files?  Isn't this a bug in Perl?
Message-Id: <slrni33o96.3m6.hjp-usenet2@hrunkner.hjp.at>

On 2010-07-05 10:00, PerlFAQ Server <brian@theperlreview.com> wrote:
> 5.38: Why does Perl let me delete read-only files?  Why does "-i" clobber protected files?  Isn't this a bug in Perl?
>
>     This is elaborately and painstakingly described in the file-dir-perms
>     article in the "Far More Than You Ever Wanted To Know" collection in
>     http://www.cpan.org/misc/olddoc/FMTEYEWTK.tgz .
>
>     The executive summary: learn how your filesystem works. The permissions
>     on a file say what can happen to the data in that file. The permissions
>     on a directory say what can happen to the list of files in that
>     directory. If you delete a file, you're removing its name from the
>     directory (so the operation depends on the permissions of the directory,
>     not of the file). If you try to write to the file, the permissions of
>     the file govern whether you're allowed to.
>

This answer is Unix-centric. AFAIK on Windows the permissions on the
file are also considered, plus a few other circumstances (file open,
locked, ...). So while I very much endorse the first sentence "learn how
your filesystem works", I would qualify the rest with "On Unix systems
 ..." or maybe "On POSIX-conforming file systems ..." (Frankly, I don't
know how NTFS on Linux or ext3 on Windows behave). Plus a sentence like
"On other systems the situation may be different." at the end. An
explanation how it works on Windows would be even better but I'm not
qualified to write that.

	hp



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

Date: Tue, 6 Jul 2010 13:50:21 +0100
From: Nick Wedd <nick@maproom.co.uk>
Subject: how to pass a function name to a function, and have it call it
Message-Id: <pyH5x+GNayMMFA8B@maproom.demon.co.uk>

I have a subroutine which draws arcs, I call it like this:
  arc( $from, $to, $col, $alist, $trim, $shift, $npoints );
and it draws an arc from $from to $to, with various adornments specified
by the other arguments.

I have a subroutine
  sub add {
    my ( $p, $q ) = @_;
    my ( $x, $y ) = @$p;
    my ( $dx, $dy ) = @$q;
    return [ $x+$dx, $y+$dy ];
  }
which receives a point [$x,$y] and a displacement [$dx,$dy] and returns
the displaced point [$x+$dx,$y+$dy].

I have a subroutine polyarc, which I call like this
  my $displist = [ [0,0], [$u,-$u], [-$u,$u] ];
  polyarc( $displist, $a, $b, $black, 0, 3 );
It draws a set of arcs, with the specified displacements.  Here it is:
  sub polyarc {
    my ( $displist, $from, $to, @rest ) = @_;
    foreach my $d ( @$displist ) {
      arc( add($from,$d), add($to,$d), @rest );
    }
  }

All the above stuff works.

Now I would like to generalise it, to work for subroutines other than
'arc'.  I can promise that their first two arguments will be the 'from'
point and the 'to' point, I can't promise anything about the other
arguments.  So I want to do something like

  sub polyanything {
    my ( $displist, $from, $to, $functionname, @rest ) = @_;
    foreach my $d ( @$displist ) {
      CALL $functionname( add($from,$d), add($to,$d), @rest );
    }
  }

but, how do I do CALL?  I have found googling for "Perl function call"
unhelpful, as you might expect.

Nick
-- 
Nick Wedd    nick@maproom.co.uk


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

Date: Tue, 06 Jul 2010 15:05:39 +0200
From: Peter Makholm <peter@makholm.net>
Subject: Re: how to pass a function name to a function, and have it call it
Message-Id: <87aaq4oj4s.fsf@vps1.hacking.dk>

Nick Wedd <nick@maproom.co.uk> writes:

> Now I would like to generalise it, to work for subroutines other than
> 'arc'.  I can promise that their first two arguments will be the 'from'
> point and the 'to' point, I can't promise anything about the other
> arguments.  So I want to do something like
>
>   sub polyanything {
>     my ( $displist, $from, $to, $functionname, @rest ) = @_;
>     foreach my $d ( @$displist ) {
>       CALL $functionname( add($from,$d), add($to,$d), @rest );
>     }
>   }
>
> but, how do I do CALL?  I have found googling for "Perl function call"
> unhelpful, as you might expect.

Instead of giving the function name as argument I would prefer to give
a reference to the function as argument. It would look something like
this:

sub polyanything {
    my ( $displist, $from, $to, $function, @rest ) = @_;

    for my $d (@$displist) {
        $function->( add($from, $d), add( $to, $d), @rest );
    }
}

And then you would call polyanything like.

  polyanything( $displist, $from, $to, \&arc, @rest );

This is documentet in the 'perlref' manual page. Making references
point 1 and using references point 3.

//Makholm


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

Date: Tue, 6 Jul 2010 14:34:46 +0100
From: Ben Morrow <ben@morrow.me.uk>
Subject: Re: how to pass a function name to a function, and have it call it
Message-Id: <m0obg7-fas2.ln1@osiris.mauzo.dyndns.org>


Quoth Nick Wedd <nick@maproom.co.uk>:
> I have a subroutine which draws arcs, I call it like this:
>   arc( $from, $to, $col, $alist, $trim, $shift, $npoints );
> and it draws an arc from $from to $to, with various adornments specified
> by the other arguments.
<snip>
> 
> Now I would like to generalise it, to work for subroutines other than
> 'arc'.  I can promise that their first two arguments will be the 'from'
> point and the 'to' point, I can't promise anything about the other
> arguments.  So I want to do something like
> 
>   sub polyanything {
>     my ( $displist, $from, $to, $functionname, @rest ) = @_;
>     foreach my $d ( @$displist ) {
>       CALL $functionname( add($from,$d), add($to,$d), @rest );
>     }
>   }

If you're thinking like this, you would probably enjoy Mark-Jason
Dominus' book 'Higher-Order Perl'.

Ben



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

Date: Tue, 06 Jul 2010 10:38:11 -0400
From: Sherm Pendley <spamtrap@shermpendley.com>
Subject: Re: how to pass a function name to a function, and have it call it
Message-Id: <m2y6dollpo.fsf@shermpendley.com>

Nick Wedd <nick@maproom.co.uk> writes:

> Now I would like to generalise it, to work for subroutines other than
> 'arc'.  I can promise that their first two arguments will be the 'from'
> point and the 'to' point, I can't promise anything about the other
> arguments.  So I want to do something like
>
>   sub polyanything {
>     my ( $displist, $from, $to, $functionname, @rest ) = @_;
>     foreach my $d ( @$displist ) {
>       CALL $functionname( add($from,$d), add($to,$d), @rest );
>     }
>   }
>
> but, how do I do CALL?

Symbolic references (which is what you're asking about here) are evil.
Use a reference to a function instead:

sub somefunc { ... }

sub polyanything {
    my ( $displist, $from, $to, $func, @rest ) = @_;
    foreach my $d ( @$displist ) {
        $func->( add($from, $d), add($to, $d), @rest );
    }
}

Then you can call your polyanything with:

polyanything( \@displist, $from, $to, \&somefunc, $foo, $bar, $baz);

sherm--

-- 
Sherm Pendley                <www.shermpendley.com>
                             <www.camelbones.org>
Cocoa Developer


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

Date: Sun, 4 Jul 2010 20:36:52 -0700 (PDT)
From: "C.DeRykus" <derykus@gmail.com>
Subject: Re: How to use $string=~s/(whatever)/${$i}/; with strict ref?
Message-Id: <cb542451-ef81-473b-a044-a83582cf5a63@m40g2000prc.googlegroups.com>

On Jul 2, 6:51=A0am, yjnnhauhht <yjnnhau...@mailinator.com> wrote:
> On Jul 2, 3:39=A0pm, yjnnhauhht <yjnnhau...@mailinator.com> wrote:
>
>
>
> > On Jul 2, 12:23=A0am, Big and Blue <N...@dsl.pipex.com> wrote:
>
> > > On 07/01/10 17:29, Tad McClellan wrote:
>
> > > > =A0 =A0 =A0$string=3D~s/(test)/test/;
>
> > > > I smell an XY-problem.
>
> > > > What is it that you are actually trying to accomplish?
>
> > > Is it, by chance:
>
> > > my $i=3D1;
> > > my $string=3D"teststring";
> > > $string=3D~s/(?<test>test)/$+{test}/;
> > > print "$string\n";
>
> > > ?
>
> > > --
> > > =A0 =A0 =A0 =A0 =A0 =A0 =A0 Just because I've written it doesn't mean=
 that
> > > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0either you or I have to believ=
e it.
>
> > This doesn't solve my issue, cause I need to do the thing in a for
> > loop where the $i is incremented.
> > Thanks for your time though.
>
> Well what I really want to do is some kind of "highlighting grep -E"
> which highlights the part of the match pattern that is inside ().
> For example if I do mygrep "...\w*(test)..." file, I get the lines
> matching the pattern and the word test is highlighted.
> To do this I have to add a highligth/nohighligth control string before
> and after each () group.
> I though I will be able to do this in one regex, but failed and only
> found a solution where I need to iterate on the () groups and do the
> s/.../$i/ I ask you about.

my $str =3D  "1a:23b:4c";

$str =3D s{ (\d+)(\w+) }
        { my $s;$s .=3D qq{[$_]} for $1,$2;$s }gex;

--
Charles DeRykus


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

Date: Mon, 5 Jul 2010 13:05:19 -0700 (PDT)
From: "C.DeRykus" <derykus@gmail.com>
Subject: Re: How to use $string=~s/(whatever)/${$i}/; with strict ref?
Message-Id: <a2a2fdb9-b912-408d-891c-4bc79b9d0862@k8g2000prh.googlegroups.com>

On Jul 4, 8:36=A0pm, "C.DeRykus" <dery...@gmail.com> wrote:
 ...
> my $str =3D =A0"1a:23b:4c";
>
> $str =3D s{ (\d+)(\w+) }
          {...
^^^^^^^^^
  $str =3D~

--
Charles DeRykus


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

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


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