[31871] in Perl-Users-Digest
Perl-Users Digest, Issue: 3134 Volume: 11
daemon@ATHENA.MIT.EDU (Perl-Users Digest)
Fri Sep 17 03:09:29 2010
Date: Fri, 17 Sep 2010 00:09:08 -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 Fri, 17 Sep 2010 Volume: 11 Number: 3134
Today's topics:
How to update the GUI <founder@pege.org>
Re: How to update the GUI <ben@morrow.me.uk>
Re: How to update the GUI <founder@pege.org>
Re: How to update the GUI <ben@morrow.me.uk>
Re: Marc the Reaper <marc.girod@gmail.com>
Memory leak with threads <jcombe@gmail.com>
Re: Memory leak with threads <rvtol+usenet@xs4all.nl>
Re: Memory leak with threads <rvtol+usenet@xs4all.nl>
Re: Memory leak with threads <jcombe@gmail.com>
Re: Memory leak with threads <smallpond@juno.com>
Re: Memory leak with threads sln@netherlands.com
Re: Memory leak with threads <xhoster@gmail.com>
SOAP::Lite, Data::Dumper and getting the values <tch@nospam.wpkg.org>
Re: SOAP::Lite, Data::Dumper and getting the values <marc.girod@gmail.com>
Re: Typeglobs and References <derykus@gmail.com>
Digest Administrivia (Last modified: 6 Apr 01) (Perl-Users-Digest Admin)
----------------------------------------------------------------------
Date: Fri, 17 Sep 2010 01:47:38 +0200
From: =?ISO-8859-1?Q?Roland_M=F6sl?= <founder@pege.org>
Subject: How to update the GUI
Message-Id: <i6uaap$kv9$1@news.albasani.net>
I am just migrating a software from
a 11 year old version from active Perl.
This 11 year old version can not be direct installed on Windows 7 - 64 Bit.
The main migration problem is the behavior of the GUI updates
during the software operates.
During long task, can be up to 2 hours,
the old Perl version shows updates on the GUI,
so the user is informed about the progress of the work.
I installed now
ActivePerl 5.12 - Windows x86
The old software runs, but the only major problem:
The GUI does not update during long tasks.
The GUI updates only when PERL waits for the
next user interaction.
How to force during the software works
updates of the GUI display?
--
Roland Mösl - PEGE - http://www.pege.org
Planetary Engineering Group Earth
------------------------------
Date: Fri, 17 Sep 2010 01:37:47 +0100
From: Ben Morrow <ben@morrow.me.uk>
Subject: Re: How to update the GUI
Message-Id: <rrpam7-pvg.ln1@osiris.mauzo.dyndns.org>
Quoth =?ISO-8859-1?Q?Roland_M=F6sl?= <founder@pege.org>:
> I am just migrating a software from
> a 11 year old version from active Perl.
Which version of Perl were you using previously?
Which version of Windows?
> This 11 year old version can not be direct installed on Windows 7 - 64 Bit.
Have you tried 5.12 under whatever version of Windows you were using
before?
> The main migration problem is the behavior of the GUI updates
> during the software operates.
What GUI toolkit are you using?
> During long task, can be up to 2 hours,
> the old Perl version shows updates on the GUI,
> so the user is informed about the progress of the work.
>
> I installed now
> ActivePerl 5.12 - Windows x86
>
> The old software runs, but the only major problem:
>
> The GUI does not update during long tasks.
> The GUI updates only when PERL waits for the
> next user interaction.
Please post a minimal program that exhibits this problem.
Ben
------------------------------
Date: Fri, 17 Sep 2010 03:06:58 +0200
From: =?UTF-8?B?Um9sYW5kIE3DtnNs?= <founder@pege.org>
Subject: Re: How to update the GUI
Message-Id: <i6uevi$th3$1@news.albasani.net>
On 2010-09-17 02:37, Ben Morrow wrote:
>
> Quoth =?ISO-8859-1?Q?Roland_M=F6sl?=<founder@pege.org>:
>> I am just migrating a software from
>> a 11 year old version from active Perl.
>
> Which version of Perl were you using previously?
ActiveState built 522 from 1999
> Which version of Windows?
This had been used under Win 95, Win 98, Win XP
and now under Windows 7 64 Bit.
Only the installer does not work under Windows 7 64 Bit.
I transferred with Laplink PC-Mover
the installation from my old Win XP to my new notebook
>> This 11 year old version can not be direct installed on Windows 7 - 64 Bit.
>
> Have you tried 5.12 under whatever version of Windows you were using
> before?
I tried to migrate also 2002, but I was not able to
solve the same problem, the GUI updates.
>> The main migration problem is the behavior of the GUI updates
>> during the software operates.
>
> What GUI toolkit are you using?
HTA = Hyper Text Application
using MSIE as GUI
Looks like
<html><head><title>WSC - Web Site Compiler - loading...</title>
<HTA:APPLICATION ID="oHTA"
applicationname="APPLICATIONNAME"
icon=ICONPATH
scroll=no
singleInstance=yes
windowstate=maximize />
<script language=PerlScript>
use strict "vars";
use strict "refs";
use strict "subs";
use Win32::Shell;
&init();
>> During long task, can be up to 2 hours,
>> the old Perl version shows updates on the GUI,
>> so the user is informed about the progress of the work.
>>
>> I installed now
>> ActivePerl 5.12 - Windows x86
>>
>> The old software runs, but the only major problem:
>>
>> The GUI does not update during long tasks.
>> The GUI updates only when PERL waits for the
>> next user interaction.
>
> Please post a minimal program that exhibits this problem.
I use for example updates of the title like
$main::window->document-> { "title" } = "Just working on folder/file";
This statements are all around the program, for example
during editing a page:
$main::window->document-> { "title" } = "Edit at folder/file";
Than I start the software for a long task,
for example to create out of the database 2000 html pages
During this long task, the title should be changed
to show the progress of the work
$main::window->document-> { "title" } = "Creating hmtl at 2000/index";
..
..
$main::window->document-> { "title" } = "Creating hmtl at 2010/index";
And when the task is finished again
$main::window->document-> { "title" } = "Edit at folder/file";
But at Perl 5.12, I see always onle "Edit at folder/file"
instead of the progress messages.
I also use innerHTML to show a progress bar
$main::window->document->all->message-> { 'innerHTML' } =
$compile::progress;
Same effect, never saw this display under Perl 5.12
--
Roland Mösl - PEGE - http://www.pege.org
Planetary Engineering Group Earth
------------------------------
Date: Fri, 17 Sep 2010 05:23:53 +0100
From: Ben Morrow <ben@morrow.me.uk>
Subject: Re: How to update the GUI
Message-Id: <p37bm7-h9k.ln1@osiris.mauzo.dyndns.org>
Quoth =?UTF-8?B?Um9sYW5kIE3DtnNs?= <founder@pege.org>:
> On 2010-09-17 02:37, Ben Morrow wrote:
> >
> > Quoth =?ISO-8859-1?Q?Roland_M=F6sl?=<founder@pege.org>:
> >> I am just migrating a software from
> >> a 11 year old version from active Perl.
> >
> > Which version of Perl were you using previously?
>
> ActiveState built 522 from 1999
Which version of *perl* is that? 5005? If so you should have upgraded
a long time ago.
> > Which version of Windows?
>
> This had been used under Win 95, Win 98, Win XP
> and now under Windows 7 64 Bit.
>
> Only the installer does not work under Windows 7 64 Bit.
I presume you mean the ActiveState installer for the old build of perl?
> I transferred with Laplink PC-Mover
> the installation from my old Win XP to my new notebook
So, let me get this straight:
5005 on WinXP works correctly
5005 on Win7 works correctly
5.12 on Win7 fails
Is that right?
> >> This 11 year old version can not be direct installed on Windows 7 - 64 Bit.
> >
> > Have you tried 5.12 under whatever version of Windows you were using
> > before?
>
> I tried to migrate also 2002, but I was not able to
> solve the same problem, the GUI updates.
I don't understand what you mean here. What is '2002'?
Have you tried using 5.12 on WinXP?
> >> The main migration problem is the behavior of the GUI updates
> >> during the software operates.
> >
> > What GUI toolkit are you using?
>
> HTA = Hyper Text Application
> using MSIE as GUI
Meh. OK. You will almost certainly have to take this up with
ActiveState. I've never used PerlScript, and as far as I know there's
noone here who's an expert on it.
> > Please post a minimal program that exhibits this problem.
>
> I use for example updates of the title like
>
> $main::window->document-> { "title" } = "Just working on folder/file";
>
> This statements are all around the program, for example
> during editing a page:
>
> $main::window->document-> { "title" } = "Edit at folder/file";
<snip>
I will just point out that this *isn't* a complete program. A complete
program looks something like (I'm guessing here, so bear with me):
<html>
<head>
<title>WSC - Web Site Compiler - loading...</title>
<HTA:APPLICATION ID="oHTA"
applicationname="APPLICATIONNAME"
icon=ICONPATH
scroll=no
singleInstance=yes
windowstate=maximize />
<script language=PerlScript>
$main::window->document->{title} = "foo";
</script>
</head>
<body>foo</body>
</html>
together with a description along the lines of 'I expected the title of
the page to change to "foo", but it didn't'. You won't get anywhere
until you can come up with something like this, and confirm that it
demonstrates the problem.
Ben
------------------------------
Date: Thu, 16 Sep 2010 23:09:45 -0700 (PDT)
From: Marc Girod <marc.girod@gmail.com>
Subject: Re: Marc the Reaper
Message-Id: <f73acf5a-d818-457c-89e5-3eab7c90c533@c16g2000vbp.googlegroups.com>
On Sep 16, 10:13=A0am, "C.DeRykus" <dery...@gmail.com> wrote:
> So you could change the handler slightly and
> eliminate the waitpid in the sleep loop.
Thanks. You are right, of course.
What is your reason to prefer 'while keys %family' to 'while %family'?
Marc
------------------------------
Date: Thu, 16 Sep 2010 05:18:58 -0700 (PDT)
From: Jon Combe <jcombe@gmail.com>
Subject: Memory leak with threads
Message-Id: <9d726d7e-82ff-405f-91a5-e74d93ab56f9@k9g2000vbo.googlegroups.com>
I have some Perl code that uses threads but found that after running
for a few days the memory usage had increased dramatically. I
simplified the code to the following but find when I run it with a
varying number of threads, the memory usage always increases. The
"countdown" at the end is just there to give me 30 seconds to grab the
memory utilisation before the process ends. I find that it uses approx
70MB for 50,000 threads, 140MB for 100,000 threads and 210MB for
150,000 threads.
I've tried on Perl 5.8.8, 10.2 and 12.2 all with similar results. Is
this a bug or have I just done something wrong? Any help appreciated!
#!/usr/bin/perl -w
use strict;
use threads;
use threads::shared;
for ( my $i = 0 ; $i < 150000 ; $i++ )
{
my $thread = threads->create('thread_function');
$thread -> join();
if ( $i % 1000 == 0 )
{
printf ( "%010i\n" , $i );
}
}
print "DONE\n";
for ( my $i = 0 ; $i < 30 ; $i++ )
{
print "Count down " . (30-$i) . "\n";
sleep(1);
}
sub thread_function
{
}
Thanks.
Jon
------------------------------
Date: Thu, 16 Sep 2010 17:21:29 +0200
From: "Dr.Ruud" <rvtol+usenet@xs4all.nl>
Subject: Re: Memory leak with threads
Message-Id: <4c9235f9$0$41105$e4fe514c@news.xs4all.nl>
On 2010-09-16 14:18, Jon Combe wrote:
> I have some Perl code that uses threads but found that after running
> for a few days the memory usage had increased dramatically. I
> simplified the code to the following but find when I run it with a
> varying number of threads, the memory usage always increases. The
> "countdown" at the end is just there to give me 30 seconds to grab the
> memory utilisation before the process ends. I find that it uses approx
> 70MB for 50,000 threads, 140MB for 100,000 threads and 210MB for
> 150,000 threads.
>
> I've tried on Perl 5.8.8, 10.2 and 12.2 all with similar results. Is
> this a bug or have I just done something wrong? Any help appreciated!
Joined threads still occupy memory, so that is probably all.
Play around with the below. Also run it with a parameter.
#!/usr/bin/perl -w
use strict;
use Devel::Size qw( total_size );
use threads;
use threads::shared;
my @thread;
for ( 0 .. 2999 ) {
push @thread, threads->create('thread_function');
$thread[ -1 ]->join();
@ARGV and $thread[ -1 ] = undef;
if ( @thread % 1000 == 0 ) {
printf "%s %s\n" , 0+ @thread, total_size( \@thread );
}
}
printf "%s %s\n" , 0+ @thread, total_size( \@thread );
sub thread_function {
# ...
}
Without the undeffing, it looks like this:
0 56
1000 88160
2000 176256
3000 268448
and with undeffing, like this:
0 56
1000 20144
2000 40240
3000 64432
--
Ruud
------------------------------
Date: Thu, 16 Sep 2010 17:27:38 +0200
From: "Dr.Ruud" <rvtol+usenet@xs4all.nl>
Subject: Re: Memory leak with threads
Message-Id: <4c92376a$0$41105$e4fe514c@news.xs4all.nl>
On 2010-09-16 17:21, Dr.Ruud wrote:
> Without the undeffing, it looks like this:
>
> 0 56
> 1000 88160
> 2000 176256
> 3000 268448
>
> and with undeffing, like this:
>
> 0 56
> 1000 20144
> 2000 40240
> 3000 64432
That was the output of a slightly newer version:
#!/usr/bin/perl -w
use strict;
use Devel::Size qw( total_size );
use threads;
use threads::shared;
use constant NUM => 3000;
my @thread;
printf "%8s %8s\n" , 0+ @thread, total_size( \@thread );
for ( 1 .. NUM ) {
push @thread, threads->create('thread_function');
$thread[ -1 ] -> join();
@ARGV and $thread[ -1 ] = undef;
if ( ( NUM - @thread ) % 1000 == 0 ) {
printf "%8s %8s\n" , 0+ @thread, total_size( \@thread );
}
}
sub thread_function {
# ...
}
__END__
--
Ruud
------------------------------
Date: Thu, 16 Sep 2010 08:45:34 -0700 (PDT)
From: Jon Combe <jcombe@gmail.com>
Subject: Re: Memory leak with threads
Message-Id: <b34942a9-9992-4ec6-955b-afb41eba2e54@c32g2000vbq.googlegroups.com>
> That was the output of a slightly newer version:
Thanks for looking into this. I'm a little puzzled why the need to
undef the thread. Since my original code stored each thread in my
$thread in the loop $thread should go out of scope after each
iteration of the loop and should get automatically cleaned up. Is that
not the case?
Looking at your results (and I get similar) it appears threads still
use memory after they've ended. Is there no way to free up all the
memory a thread occupied once it has ended?
Thanks
Jon
------------------------------
Date: Thu, 16 Sep 2010 13:42:52 -0400
From: Steve C <smallpond@juno.com>
Subject: Re: Memory leak with threads
Message-Id: <i6tkv9$d7b$1@news.eternal-september.org>
On 09/16/2010 08:18 AM, Jon Combe wrote:
> I have some Perl code that uses threads but found that after running
> for a few days the memory usage had increased dramatically. I
> simplified the code to the following but find when I run it with a
> varying number of threads, the memory usage always increases. The
> "countdown" at the end is just there to give me 30 seconds to grab the
> memory utilisation before the process ends. I find that it uses approx
> 70MB for 50,000 threads, 140MB for 100,000 threads and 210MB for
> 150,000 threads.
>
> I've tried on Perl 5.8.8, 10.2 and 12.2 all with similar results. Is
> this a bug or have I just done something wrong? Any help appreciated!
>
Is there any way to change your application to have a thread pool
instead of creating and destroying threads?
------------------------------
Date: Thu, 16 Sep 2010 15:19:40 -0700
From: sln@netherlands.com
Subject: Re: Memory leak with threads
Message-Id: <d55596hf7mfjofiv0kjjdprpdfq05j8pa8@4ax.com>
On Thu, 16 Sep 2010 05:18:58 -0700 (PDT), Jon Combe <jcombe@gmail.com> wrote:
>I have some Perl code that uses threads but found that after running
>for a few days the memory usage had increased dramatically. I
>simplified the code to the following but find when I run it with a
>varying number of threads, the memory usage always increases. The
>"countdown" at the end is just there to give me 30 seconds to grab the
>memory utilisation before the process ends. I find that it uses approx
>70MB for 50,000 threads, 140MB for 100,000 threads and 210MB for
>150,000 threads.
>
>I've tried on Perl 5.8.8, 10.2 and 12.2 all with similar results. Is
>this a bug or have I just done something wrong? Any help appreciated!
>
>#!/usr/bin/perl -w
>
>use strict;
>use threads;
>use threads::shared;
>
>for ( my $i = 0 ; $i < 150000 ; $i++ )
>{
> my $thread = threads->create('thread_function');
> $thread -> join();
> if ( $i % 1000 == 0 )
> {
> printf ( "%010i\n" , $i );
> }
>}
>
>print "DONE\n";
>
>for ( my $i = 0 ; $i < 30 ; $i++ )
>{
> print "Count down " . (30-$i) . "\n";
> sleep(1);
>}
>
>sub thread_function
>{
>}
>
I ran this code and did not find the problem you
have. I'm using Activestate 5.10.0 for win32 on an
XP platform.
From task manager, the mem usage fluxuates around 3.2 MB
(sort of a minimum for the perl interpreter). The # of
threads is never more than 1 - 2 so the thread is being
destroyed fine.
There is no reason "my $thread" should not be reused and its
object dereferenced.
What seems to be the problem is the object it references
is not being freed.
Some things you could try, but probably won't work:
- threads->create(\&thread_function)->join();
- Create just a few threads, then see what these say:
threads->list()
threads->list(threads::all)
threads->list(threads::running)
threads->list(threads::joinable)
Also, there are caveats about various things, stacksize,
OS, etc..
-sln
------------------------------
Date: Thu, 16 Sep 2010 19:12:54 -0700
From: Xho Jingleheimerschmidt <xhoster@gmail.com>
Subject: Re: Memory leak with threads
Message-Id: <4c92e3bd$0$17684$ed362ca5@nr5-q3a.newsreader.com>
Dr.Ruud wrote:
> On 2010-09-16 14:18, Jon Combe wrote:
>
>> I have some Perl code that uses threads but found that after running
>> for a few days the memory usage had increased dramatically. I
>> simplified the code to the following but find when I run it with a
>> varying number of threads, the memory usage always increases. The
>> "countdown" at the end is just there to give me 30 seconds to grab the
>> memory utilisation before the process ends. I find that it uses approx
>> 70MB for 50,000 threads, 140MB for 100,000 threads and 210MB for
>> 150,000 threads.
>>
>> I've tried on Perl 5.8.8, 10.2 and 12.2 all with similar results. Is
>> this a bug or have I just done something wrong? Any help appreciated!
>
> Joined threads still occupy memory, so that is probably all.
>
> Play around with the below. Also run it with a parameter.
>
>
> #!/usr/bin/perl -w
> use strict;
>
> use Devel::Size qw( total_size );
>
> use threads;
> use threads::shared;
>
> my @thread;
> for ( 0 .. 2999 ) {
>
> push @thread, threads->create('thread_function');
Why introduce an array when it wasn't there in the original code and it
doesn't do anything meaningful?
>
> $thread[ -1 ]->join();
>
> @ARGV and $thread[ -1 ] = undef;
>
> if ( @thread % 1000 == 0 ) {
> printf "%s %s\n" , 0+ @thread, total_size( \@thread );
> }
> }
>
> printf "%s %s\n" , 0+ @thread, total_size( \@thread );
>
> sub thread_function {
> # ...
> }
>
>
> Without the undeffing, it looks like this:
>
> 0 56
> 1000 88160
> 2000 176256
> 3000 268448
>
> and with undeffing, like this:
>
> 0 56
> 1000 20144
> 2000 40240
> 3000 64432
>
This is just telling us that arrays take up space up to their high water
mark, more when dense and less when sparse, but still space. It has
nothing to do with threads. The leak (which does seem to exist) is not
going to be detected using Devel::Size on a variable that has nothing to
do with the leak.
You need to measure the process space from the OS, not from Perl, which
after all likely cannot be trusted if it is leaking memory.
On Linux:
for ( my $i = 0 ; $i < 150000 ; $i++ )
{
my $thread = threads->create('thread_function');
$thread -> join();
if ( $i % 1000 == 0 )
{
printf ( "%010i\t%3\$s" , $i, `ps -p $$ -o rss` );
}
}
Xho
------------------------------
Date: Thu, 16 Sep 2010 16:31:11 +0200
From: Tomasz Chmielewski <tch@nospam.wpkg.org>
Subject: SOAP::Lite, Data::Dumper and getting the values
Message-Id: <8feo1fFatgU1@mid.uni-berlin.de>
My hosting provider lets me change the IP assigned to each of the servers (IP failover).
It can be done in the web interface, but in reality, it's much better to do this automatically with Heartbeat as it detects that one of the servers is down.
For that, there is some Perl code using SOAP::Lite - but I'm not sure how I can get the values out of it to use them in my own code.
my $result = $soap->call( 'dedicatedFailoverList' => ($session, $hosts{$hostname}) );
my $return = $result->result();
Now, Data::Dumper would return this - I'd like to access the values through a hash, array, variable, but I' not sure how:
print $return;
MyArrayOfDedicatedFailoverStructType=ARRAY(0x25608d8)
print Dumper $return;
$VAR1 = bless( [
bless( {
'routedTo' => 'aaa.bbb.ccc.ddd',
'comment' => 'webserver failover',
'ip' => '1.1.1.1',
'ssl' => 0
}, 'dedicatedFailoverStruct' ),
bless( {
'routedTo' => 'aaa.bbb.ccc.ddd',
'comment' => 'webserver failover',
'ip' => '2.2.2.2',
'ssl' => 0
}, 'dedicatedFailoverStruct' ),
bless( {
'routedTo' => 'aaa.bbb.ccc.ddd',
'comment' => 'webserver failover',
'ip' => '3.3.3.3',
'ssl' => 0
}, 'dedicatedFailoverStruct' ),
bless( {
'routedTo' => 'aaa.bbb.ccc.ddd',
'comment' => 'webserver failover',
'ip' => '4.4.4.4',
'ssl' => 0
}, 'dedicatedFailoverStruct' ),
bless( {
'routedTo' => undef,
'comment' => undef,
'ip' => undef,
'ssl' => 0
}, 'dedicatedFailoverStruct' )
], 'MyArrayOfDedicatedFailoverStructType' );
--
Tomasz Chmielewski
http://wpkg.org
------------------------------
Date: Thu, 16 Sep 2010 23:43:38 -0700 (PDT)
From: Marc Girod <marc.girod@gmail.com>
Subject: Re: SOAP::Lite, Data::Dumper and getting the values
Message-Id: <67e1cf68-3c7b-4efc-ae07-f8c09dab26a2@q9g2000vbd.googlegroups.com>
On Sep 16, 3:31=A0pm, Tomasz Chmielewski <t...@nospam.wpkg.org> wrote:
> I'd like to access the values through a hash, array, variable, but I' not=
sure how:
for (@$return) { print $_->{ip} if defined $_->{ip} }
$return is an array of references to dedicatedFailoverStruct.
Did I understand your question?
Marc
------------------------------
Date: Thu, 16 Sep 2010 10:25:56 -0700 (PDT)
From: "C.DeRykus" <derykus@gmail.com>
Subject: Re: Typeglobs and References
Message-Id: <d77decd2-0ed1-4e33-a7ec-a839c794866d@k17g2000prf.googlegroups.com>
On Sep 16, 1:09=A0am, Ilya Zakharevich <nospam-ab...@ilyaz.org> wrote:
> On 2010-09-15, C.DeRykus <dery...@gmail.com> wrote:
>
> > BTW, ${\$a} is also equivalent to ${*a}.
>
> Of course, it is NOT.
>
> >perl -wle "$a=3D12; my $a=3D2; print ${\$a}; print ${*a}"
>
> 2
> 12
>
Agreed, watch your feet and no lexicals "need apply"
for this global position.
--
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 3134
***************************************