[27368] in Perl-Users-Digest
Perl-Users Digest, Issue: 9059 Volume: 10
daemon@ATHENA.MIT.EDU (Perl-Users Digest)
Thu Mar 16 21:06:09 2006
Date: Thu, 16 Mar 2006 18:05:15 -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 Thu, 16 Mar 2006 Volume: 10 Number: 9059
Today's topics:
Re: $zip->AddTreeMatching() speed? <Patrick_member@newsguy.com>
Can perl check if executable exists <Random@Task.be>
Re: Can perl check if executable exists <john@castleamber.com>
Re: Can perl check if executable exists <someone@example.com>
Re: Can perl check if executable exists <1usa@llenroc.ude.invalid>
Re: Can perl check if executable exists <rvtol+news@isolution.nl>
Re: debugging perl program with Tk mainloop <Peter@PSDT.com>
Re: Determine read/write status of filehandles connecte <sisyphus1@nomail.afraid.org>
Re: FAQ 3.9 Is there a ctags for Perl? (Rick Scott)
Re: FAQ 3.9 Is there a ctags for Perl? <brian.d.foy@gmail.com>
Finding unused variables in a Perl script <spotturn@gmx.de>
Re: Great JAPH (was Re: Creating Graphs Dynamically wit <abigail@abigail.nl>
Re: Great JAPH (was Re: Creating Graphs Dynamically wit <1usa@llenroc.ude.invalid>
Re: Using a variable to call a sub-routine... <darkon.tdo@gmail.com>
Re: Using a variable to call a sub-routine... <uri@stemsystems.com>
Digest Administrivia (Last modified: 6 Apr 01) (Perl-Users-Digest Admin)
----------------------------------------------------------------------
Date: 16 Mar 2006 15:21:10 -0800
From: Patrick Flaherty <Patrick_member@newsguy.com>
Subject: Re: $zip->AddTreeMatching() speed?
Message-Id: <dvcrt6016fr@drn.newsguy.com>
Hi,
thanx for your response. Mine below.
In article <Xns9786D7393BAEasu1cornelledu@127.0.0.1>, A. Sinan Unur says...
>
>Patrick Flaherty <Patrick_member@newsguy.com> wrote in
>news:dv7nbr0bhc@drn.newsguy.com:
>
>> Using perl to archive a bunch of things in a bunch of locations (into
>> a ZIP file).
>>
>> Was using functions (for each tree) such as this:
>
>It would have been better if you had posted a short but complete script.
The script itself it not short (it does a series of locations). I tried to
determine what an intelligle funcitonal block would be. Apparently you don't
fully agree.
>
>> sub process_file_develtree {
>> $this_file = $File::Find::name;
>> if ($this_file =~
>> m/.*\.(bas$|cpp$|pl$|[ce]$|xml$|sql$|vba$|vbs$)/i) {
>
>This is unnecessarily hard to read:
>
>/\.(bas|cpp|pl|[ce]|xml|sql|vba|vbc)\z/i
>
>should better.
Don't quite understand your point here. Mostly you seem to taking the '$'
(end-of-name)s off.
>
>> print $this_file . "\n";
>> $zip->addFile($this_file);
>> }
>> }
>>
>> The above, I found, gave me absolute pathnames in the ZIP file. And
>> on my target machine I never found a way of unziping except to do an
>> unzip -l. Get the name and then extract to stdout and capture the
>> file that way.
>>
>> Looking then more closely at the ZIP module, it _seems_ the only way
>> to get relative pathnames
>
>The fact that you want relative pathnames means all of these files live
>under the same root. What is wrong with a chdir to that directory?
Yes that's exactly what I use: chdir. (in my new script that is [new being
addTreeMatching() as opposed to old addFile()] ).
>
>>
>> $zip->addTreeMatching( '.', undef,
>> '\.(bas$|cpp$|pl$|[ce]$|xml$|sql$|vba$|vbs$)'; );
>
>Why not mention which module you are using? I am going to assume
>Archive::Zip. I am also not going to bother with writing separate
>implementations and profiling them, but instead take your word that this
>is slow.
Yes I'm using Archive::Zip
>
>In that case, I wonder why you don't want to use the second, optional,
>argument to addFile:
>
>#!/usr/bin/perl
>
>use strict;
>use warnings;
>
>use Archive::Zip qw( :ERROR_CODES :CONSTANTS );
>use File::Find;
>use File::Spec::Functions qw( catfile canonpath );
>
>chdir or die "Cannot chdir to $ENV{HOME}: $!";
>
>my $zip = Archive::Zip->new;
>
>find(\&zip_adder, '.');
>
>$zip->writeToFileNamed('test.zip') == AZ_OK
> or die "Cannot write to test.zip: $!";
>
>sub zip_adder {
> my $this = canonpath $File::Find::name;
> if ( $this =~ /\.pl\z/i ) {
> $zip->addFile(catfile($ENV{HOME}, $this), $this)
> or warn "Cannot add $this\n";
> }
>}
>
>__END__
>
>D:\Home\asu1\UseNet\clpmisc> zip-test.pl
>
>D:\Home\asu1\UseNet\clpmisc> unzip -l ..\..\test.zip
>
>...
>
>308 11/10/05 17:48 UseNet/clpmisc/proc/mon.pl
>676 11/10/05 18:07 UseNet/clpmisc/proc/proc.pl
>339 02/21/05 18:10 UseNet/clpmisc/s/c.pl
>368 02/21/05 18:10 UseNet/clpmisc/s/s.pl
>774 04/14/05 13:11 UseNet/clpmisc/Scalar-Util-Clone-0.04/Makefile.PL
>112 01/31/06 17:01 UseNet/clpmisc/t/t.pl
>544 03/15/05 15:18 UseNet/clpmisc/T1/Makefile.PL
>383 01/25/05 15:34 UseNet/clpmisc/test/myren.pl
>
>...
>
Ah. The second, optional argument to AddFile - that would seem to be the key
(um so to speak).
Thanx. I'll give it a try.
pat
------------------------------
Date: Thu, 16 Mar 2006 12:52:18 -0500
From: Random Task <Random@Task.be>
Subject: Can perl check if executable exists
Message-Id: <iBhSf.5964$fy1.249485@news20.bellglobal.com>
Hi ...
I have a perl scrip ...
It simple calls make ... and does some work after that ...
Before I call make I would like to see if it is in my PATH. If it is not
in my Path i would like to check for make in a couple hardcoded visual
studio directories ... i.e. VS .NET or VS6 ...
Thanks in advance,
Jim
------------------------------
Date: 16 Mar 2006 18:51:59 GMT
From: John Bokma <john@castleamber.com>
Subject: Re: Can perl check if executable exists
Message-Id: <Xns978882E2E2B15castleamber@130.133.1.4>
Random Task <Random@Task.be> wrote:
> Hi ...
>
> I have a perl scrip ...
>
> It simple calls make ... and does some work after that ...
>
> Before I call make I would like to see if it is in my PATH. If it is not
> in my Path i would like to check for make in a couple hardcoded visual
> studio directories ... i.e. VS .NET or VS6 ...
With -e you can check if a file exists. Maybe you want to check the md5
sum of the file as well (for example) to be sure it's the one you expect.
$ENV{ PATH } gives you the contents of the PATH variable.
$ENV{ ProgramFiles } gives you the Program Files directory
(type set in a command prompt to see all, but make sure to check if they
are set by XP and not some program you've installed)
HTH,
--
John Experienced Perl programmer: http://castleamber.com/
------------------------------
Date: Thu, 16 Mar 2006 22:22:05 GMT
From: "John W. Krahn" <someone@example.com>
Subject: Re: Can perl check if executable exists
Message-Id: <hylSf.1834$Zf3.1504@clgrps12>
Random Task wrote:
>
> I have a perl scrip ...
>
> It simple calls make ... and does some work after that ...
>
> Before I call make I would like to see if it is in my PATH. If it is not
> in my Path i would like to check for make in a couple hardcoded visual
> studio directories ... i.e. VS .NET or VS6 ...
use Env '@PATH';
my $executable = 'make';
my $exec_exists = grep -x "$_/$executable", @PATH;
John
--
use Perl;
program
fulfillment
------------------------------
Date: Thu, 16 Mar 2006 22:49:09 GMT
From: "A. Sinan Unur" <1usa@llenroc.ude.invalid>
Subject: Re: Can perl check if executable exists
Message-Id: <Xns9788B5619775asu1cornelledu@127.0.0.1>
"John W. Krahn" <someone@example.com> wrote in
news:hylSf.1834$Zf3.1504@clgrps12:
> Random Task wrote:
>>
>> I have a perl scrip ...
>>
>> It simple calls make ... and does some work after that ...
>>
>> Before I call make I would like to see if it is in my PATH. If it is
>> not in my Path i would like to check for make in a couple hardcoded
>> visual studio directories ... i.e. VS .NET or VS6 ...
>
> use Env '@PATH';
>
> my $executable = 'make';
>
> my $exec_exists = grep -x "$_/$executable", @PATH;
That is not going to work on Windows, which is what the OP is using (not
because of the directory separator, but because make on Windows will most
likely be make.exe).
Here is an alternative:
#!/usr/bin/perl
use strict;
use warnings;
use File::Spec::Functions qw( catfile path );
my @make_progs = qw( make.exe dmake.exe nmake.exe );
my @potential = map {
my $prog = $_;
map { catfile $_, $prog } path()
} @make_progs;
my @exists = grep { -x } @potential;
{ local $" = "\n"; print "@exists\n"; }
__END__
D:\Home\asu1\UseNet\clpmisc> pat
C:\opt\cygwin\bin\make.exe
C:\opt\vc\bin\nmake.exe
--
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://mail.augustmail.com/~tadmc/clpmisc/clpmisc_guidelines.html
------------------------------
Date: Fri, 17 Mar 2006 00:33:56 +0100
From: "Dr.Ruud" <rvtol+news@isolution.nl>
Subject: Re: Can perl check if executable exists
Message-Id: <dvd0tc.1ac.1@news.isolution.nl>
A. Sinan Unur schreef:
> my @make_progs = qw( make.exe dmake.exe nmake.exe );
'pmake' is missing.
http://search.cpan.org/~cwest/ppt-0.14/bin/make
:)
--
Affijn, Ruud
"Gewoon is een tijger."
echo 014C8A26C5DB87DBE85A93DBF |perl -pe 'tr/0-9A-F/JunkshoP cartel,/'
------------------------------
Date: Thu, 16 Mar 2006 13:54:35 GMT
From: Peter Scott <Peter@PSDT.com>
Subject: Re: debugging perl program with Tk mainloop
Message-Id: <pan.2006.03.16.13.54.32.510274@PSDT.com>
On Tue, 14 Mar 2006 19:15:08 +0100, ngoc wrote:
> But the problem here is
>
> use Tk;
> .................
> $mw->Button (
> -text => 'Add',
> -command => \&add,
> )->pack (-side => 'bottom', -anchor => 'sw', -pady => 3);
> .........................
> MainLoop;
>
> sub add {
> my $variable = &other_function;
>
> }
>
> So add() subroutine is a callback of -command. $variable is in the scope
> of add().
> To set breakpoint <DB1>b "line before end }" as you suggest (inside a
> callback). And run <DB2>c
>
> But It does not go over to <DB3> to type in "p $variable". It just goes
> over when I click the exit button of the GUI.
If you're not invoking the callback you set the breakpoint in, how can it
reach it? You have to click on your Add button. Also, your code is
misleading in that you show a blank line where you claim to be setting a
breakpoint. A blank line is not breakable.
Here is a real example that shows how this works:
$ perl -d foo
Loading DB routines from perl5db.pl version 1.27
Editor support available.
Enter h or `h h' for help, or `man perldebug' for more help.
main::(foo:7): my $mw = MainWindow->new;
DB<1> l 1-18
1 #!/usr/local/bin/perl
2: use strict;
3: use warnings;
4
5: use Tk;
6
7==> my $mw = MainWindow->new;
8: $mw->Label(-text => 'Hello, world!')->pack;
9: $mw->Button(
10 -text => 'Quit',
11 -command => \&quit,
12 )->pack;
13: MainLoop;
14
15 sub quit {
16: my $variable = 42;
17: exit;
18 }
DB<2> b 17
DB<3> c
# << Press Quit button on GUI >>
main::quit(foo:17): exit;
DB<3> p $variable
42
DB<4> q
--
Peter Scott
http://www.perlmedic.com/
http://www.perldebugged.com/
------------------------------
Date: Fri, 17 Mar 2006 12:58:14 +1100
From: "Sisyphus" <sisyphus1@nomail.afraid.org>
Subject: Re: Determine read/write status of filehandles connected to memory objects.
Message-Id: <441a186e$0$7599$afc38c87@news.optusnet.com.au>
"Anno Siegel" <anno4000@lublin.zrz.tu-berlin.de> wrote in message n
>
> Use $SIG{ __WARN__} instead, that's been around forever.
>
> sub can_write {
> my $fh = shift;
> my $warned;
> local $SIG{ __WARN__} = sub { $warned ++ };
> print $fh '';
> return ! $warned;
> }
>
> A more specific test if the warning was indeed the text "Filehandle
> %s opened only for input" would be wise in both variants.
>
> > > Alternatively one could try to use 4-arg select().
.
.
>
> Can't be done with select(). You'd need a file number for the handle
> you want to test, but fileno( $f) is -1 (invalid) if $f is a "stringy"
> filehandle.
>
Ok ... thanks again, Anno.
Cheers,
Rob
------------------------------
Date: Thu, 16 Mar 2006 14:39:28 -0000
From: rick@shadowspar.dyndns.org (Rick Scott)
Subject: Re: FAQ 3.9 Is there a ctags for Perl?
Message-Id: <1142519701.dEEDE.21696@shadowspar>
(Uri Guttman <uri@stemsystems.com> uttered:)
> >>>>> "r" == robic0 <robic0> writes:
>
> r> I vaguely remember ctags, its a C thing aint it? Please
> r> refresh me on what a "ctag" is because I may represent a
> r> million other readers of this piece of crap maintained faq
> r> that think you post to only a few who already know what your
> r> taling about.
>
> r> But then, "why the fuck post it huh?"
>
> because it is a small part of the vast worldwide perl cabal
> conspiracy whose prime directive is to annoy the shit out of you!
>
> and we must be succeeding since you get so pissed off when you
> don't understand something.
Indeed. Knowledge of what ctags is a closely guarded secret,
and if we don't put a long-winded description of it in the FAQ,
there'll be *absolutely* *no* *way* for anyone to figure out
what the hell it is.
Eh, wot's this, now?
http://www.google.ca/search?q=ctags
Rick
--
key CF8F8A75 / print C5C1 F87D 5056 D2C0 D5CE D58F 970F 04D1 CF8F 8A75
Neither can his mind be thought to be in tune, whose words do jarre;
nor his reason in frame, whose sentence is preposterous.
:Ben Jonson
------------------------------
Date: Thu, 16 Mar 2006 11:24:14 -0600
From: brian d foy <brian.d.foy@gmail.com>
Subject: Re: FAQ 3.9 Is there a ctags for Perl?
Message-Id: <160320061124142349%brian.d.foy@gmail.com>
In article <1142519701.dEEDE.21696@shadowspar>, Rick Scott
<rick@shadowspar.dyndns.org> wrote:
> http://www.google.ca/search?q=ctags
Although I can't put this in the faq:
http://justfuckinggoogleit.com
If anyone has updated info on ctags and ctag-like things for Perl,
tell me about it so I can make the relevant updates to the answer. :)
*** Free account sponsored by SecureIX.com ***
*** Encrypt your Internet usage with a free VPN account from http://www.SecureIX.com ***
------------------------------
Date: Thu, 16 Mar 2006 13:37:46 +0100
From: Andreas Krause <spotturn@gmx.de>
Subject: Finding unused variables in a Perl script
Message-Id: <dvbm6r$2p8$1@athen03.muc.infineon.com>
I'm looking for a module or program to find all declared but unused variables
in a Perl script.
The best thing I could find yet is B::Xref, which shows (in different parts
of its output) the lines, where a variable is defined and the lines and
subroutines, where it is used.
To use this info, I would have to process the output file to scan for all
usages for each variable to find the unused ones. Very cumbersome...
Any recommendations for a better approach?
andi
------------------------------
Date: 16 Mar 2006 19:58:16 GMT
From: Abigail <abigail@abigail.nl>
Subject: Re: Great JAPH (was Re: Creating Graphs Dynamically with Perl)
Message-Id: <slrne1jgqn.46n.abigail@alexandra.abigail.nl>
Dave Weaver (zen13097@zen.co.uk) wrote on MMMMDLXXX September MCMXCIII in
<URL:news:441934be$0$5012$db0fefd9@news.zen.co.uk>:
// A. Sinan Unur <1usa@llenroc.ude.invalid> wrote:
// > Abigail <abigail@abigail.nl> wrote in
// > news:slrne1eb9n.1v0.abigail@alexandra.abigail.nl:
// >
// > > #!/opt/perl/bin/perl -- # No trailing newline after the last line!
// > > BEGIN{$|=$SIG{__WARN__}=sub{$_=$_[0];y-_- -;print/(.)"$/;seek _,-open(_
// > > ,"+<$0"),2;truncate _,tell _;close _;exec$0}}//rekcaH_lreP_rehtona_tsuJ
// >
// > This is an amazing JAPH. Very instructive.
// >
//
// Seconded!
//
// For those having difficulty getting it to work (like me!), you need to
// save this to a file and make that file executable. i.e.:
//
// % perl japh.pl # won't work
// Jsyntax error at japh.pl line 3, next token ???
// Execution of japh.pl aborted due to compilation errors.
//
// % chmod +x japh.pl ; ./japh.pl # will work.
// Just another Perl Hacker
The fun is executing the file *twice*.
Abigail
--
perl -wle 'print "Prime" if (1 x shift) !~ /^1?$|^(11+?)\1+$/'
------------------------------
Date: Thu, 16 Mar 2006 20:07:06 GMT
From: "A. Sinan Unur" <1usa@llenroc.ude.invalid>
Subject: Re: Great JAPH (was Re: Creating Graphs Dynamically with Perl)
Message-Id: <Xns978899E877103asu1cornelledu@127.0.0.1>
Abigail <abigail@abigail.nl> wrote in
news:slrne1jgqn.46n.abigail@alexandra.abigail.nl:
> Dave Weaver (zen13097@zen.co.uk) wrote on MMMMDLXXX September MCMXCIII
> in <URL:news:441934be$0$5012$db0fefd9@news.zen.co.uk>:
> // A. Sinan Unur <1usa@llenroc.ude.invalid> wrote:
> // > Abigail <abigail@abigail.nl> wrote in
> // > news:slrne1eb9n.1v0.abigail@alexandra.abigail.nl:
> // >
> // > > #!/opt/perl/bin/perl -- # No trailing newline after the last line!
> // > > BEGIN{$|=$SIG{__WARN__}=sub{$_=$_[0];y-_--;print/(.)"$/;seek _,-open(_
> // > > ,"+<$0"),2;truncate _,tell _;close _;exec$0}}//rekcaH_lreP_rehtona_tsuJ
> // >
> // > This is an amazing JAPH. Very instructive.
> // >
> //
> // Seconded!
> //
...
> // % chmod +x japh.pl ; ./japh.pl # will work.
> // Just another Perl Hacker
>
>
> The fun is executing the file *twice*.
That was the original reason I thought this one was extremely impressive.
It sure is hard to read ;-)
Sinan
--
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://mail.augustmail.com/~tadmc/clpmisc/clpmisc_guidelines.html
------------------------------
Date: Thu, 16 Mar 2006 16:26:19 -0000
From: "David K. Wall" <darkon.tdo@gmail.com>
Subject: Re: Using a variable to call a sub-routine...
Message-Id: <Xns9788745C232E6dkwwashere@216.168.3.30>
Tad McClellan <tadmc@augustmail.com> wrote:
> Big Jay <jbredice@hotmail.com> wrote:
>
>
>> I'm trying to call a sub-routine based on the value of a
>> variable.
>
>
> That is what is known as a "dispatch table".
>
> You'll need to learn a bit about references to implement
> a dispatch table in Perl.
>
> (the word "subroutine" is not hyphenated.)
I wrote a tentative entry for the FAQ about this a year or two ago,
but never quite got around to submitting it, mainly because I
thought it should be vetted by some with more knowledge and
experience than myself.
Anyway, here it is:
How do I call a subroutine when I have the name of the subroutine?
How do I use a dispatch table?
A dispatch table is just a special name for a hash with code
references. (see L<perlref>) The code references can be from any
source, for example, references to named subroutines in or imported
into a module, references to fully qualified subroutine names, or
anonymous code references.
Here is an example of a dispatch table:
my %dispatch = (
update => \&update,
add => \&add,
other => \&Foo::bar,
error => sub { die "Error: @_" }
default => \&do_something,
);
Put the creation of the dispatch table outside of any subroutine
that uses it so it (the dispatch table) is created at compile time
and not recreated in each call to the subroutine that does the
dispatching.
If we have a desired name in the scalar $input, the associated
subroutine can be called using $dispatch{$input}->().
The code should always handle the case where the input value is not
a key of %dispatch, so we might implement the call like this:
($dispatch{$input} || $dispatch{'default'})->(@arguments);
------------------------------
Date: Thu, 16 Mar 2006 13:39:43 -0500
From: Uri Guttman <uri@stemsystems.com>
Subject: Re: Using a variable to call a sub-routine...
Message-Id: <x7pskmz11s.fsf@mail.sysarch.com>
>>>>> "DKW" == David K Wall <darkon.tdo@gmail.com> writes:
DKW> How do I call a subroutine when I have the name of the subroutine?
DKW> How do I use a dispatch table?
DKW> A dispatch table is just a special name for a hash with code
DKW> references. (see L<perlref>) The code references can be from any
DKW> source, for example, references to named subroutines in or imported
DKW> into a module, references to fully qualified subroutine names, or
DKW> anonymous code references.
A dispatch table is just a special name for a hash which holds pairs of
name/code references for its keys/values. The code references can refer
to named subs, anonymous subs, package local subs or fully qualified
subs.
DKW> Here is an example of a dispatch table:
DKW> my %dispatch = (
DKW> update => \&update,
DKW> add => \&add,
DKW> other => \&Foo::bar,
DKW> error => sub { die "Error: @_" }
DKW> default => \&do_something,
DKW> );
DKW> Put the creation of the dispatch table outside of any subroutine
DKW> that uses it so it (the dispatch table) is created at compile time
DKW> and not recreated in each call to the subroutine that does the
DKW> dispatching.
and make sure it is initialized before it gets used. a classic and
subtle bug is declaring the table near the sub that does the
dispatching. if this sub gets called before the table assignment is
done, it will dispatch on an empty table. if this code is in a module,
it will probably not fail that way since the base code of the module
will be executed including the table assignment. but if this is all in
the main script, the call could be made at the top whereas the
assignment is lower down. then you should wrap the assignment AND its
dispatching sub into a single BEGIN block:
BEGIN {
my %dispatch = ( blah ...
) ;
sub handle_dispatch {
blah
}
}
DKW> If we have a desired name in the scalar $input, the associated
DKW> subroutine can be called using $dispatch{$input}->().
DKW> The code should always handle the case where the input value is not
DKW> a key of %dispatch, so we might implement the call like this:
DKW> ($dispatch{$input} || $dispatch{'default'})->(@arguments);
the default shouldn't be an entry in the dispatch table unless it is
allowed to be called by that name.
another point is that you can have multiple names calling the same
code. this effectively allows aliases for the code. one variation is
that the name is also passed as an argument to the code to handle
similar cases in one sub. also in some designs you don't allow a default
and if the name is not valid you issue some error.
dispatch tables are a great tool but you need to make sure this FAQ
covers enough points to make it useful. and when you finish this, just
send it into the FAQ autopost thing and the cabal will take a look at
it. i would support adding it to the FAQ.
uri
--
Uri Guttman ------ uri@stemsystems.com -------- http://www.stemsystems.com
--Perl Consulting, Stem Development, Systems Architecture, Design and Coding-
Search or Offer Perl Jobs ---------------------------- http://jobs.perl.org
------------------------------
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 9059
***************************************