[31331] in Perl-Users-Digest

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

Perl-Users Digest, Issue: 2576 Volume: 11

daemon@ATHENA.MIT.EDU (Perl-Users Digest)
Tue Sep 1 18:52:17 2009

Date: Tue, 1 Sep 2009 15:51:43 -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, 1 Sep 2009     Volume: 11 Number: 2576

Today's topics:
        2 problems parsing output from HTML::TableExtract <r.ted.byers@gmail.com>
    Re: 2 problems parsing output from HTML::TableExtract <hjp-usenet2@hjp.at>
    Re: 2 problems parsing output from HTML::TableExtract <tadmc@seesig.invalid>
    Re: 2 problems parsing output from HTML::TableExtract <tadmc@seesig.invalid>
    Re: 2 problems parsing output from HTML::TableExtract sln@netherlands.com
    Re: 2 problems parsing output from HTML::TableExtract sln@netherlands.com
    Re: 2 problems parsing output from HTML::TableExtract <r.ted.byers@gmail.com>
    Re: 2 problems parsing output from HTML::TableExtract sln@netherlands.com
    Re: 2 problems parsing output from HTML::TableExtract <uri@StemSystems.com>
    Re: 2 problems parsing output from HTML::TableExtract <ben@morrow.me.uk>
    Re: 2 problems parsing output from HTML::TableExtract <ben@morrow.me.uk>
    Re: 2 problems parsing output from HTML::TableExtract <uri@StemSystems.com>
    Re: 2 problems parsing output from HTML::TableExtract <tadmc@seesig.invalid>
    Re: 2 problems parsing output from HTML::TableExtract <hjp-usenet2@hjp.at>
        Digest Administrivia (Last modified: 6 Apr 01) (Perl-Users-Digest Admin)

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

Date: Tue, 1 Sep 2009 11:53:33 -0700 (PDT)
From: Ted Byers <r.ted.byers@gmail.com>
Subject: 2 problems parsing output from HTML::TableExtract
Message-Id: <2d0e2d00-4fc3-4e58-b262-bc502b6b46fc@p36g2000vbn.googlegroups.com>

I have to automate parsing email that comes in with its data in an
HTML file (so I have no control over the content or how it is
formatted.

HTML::TableExtract has proved priceless in getting this done.
However, there are two issues that are giving me grief.

The first is probably simple, at least for regex experts.  There are
characters in the string that, while not a problem in browsers
displaying the HTML, are a problem for my attempts to refine this data
down to text I can work with in my other code.  There are a plethora
of instances of the that Emacs displays as '\240\.  But the following
statement doesn't remove them.

     $payload_tmp =~ s/\240//g;

Neither does:
     $payload_tmp =~ s/\\240//g;

I suspect it is a printer/display control character that results in
the following text being underlined when displayed using a browser
like MS IE or Firefox.  What I don't know is what value I ought to use
in my regex to get rid of it.

I think I know what I can do, to work around this, but I would like to
know how to construct a regular expression to get rid of it.

The more important question gets down to how to deal with a warning I
get on some output produced by HTML::TableExtract.

In the html I get, there is one table, but without proper table
headers, and there are two logical tables in this one HTML table
separated by rows that have no visible values in their cells.  Those
cells without useful data cause problems in the output that manifests
with a warning message:

Use of uninitialized value $row in join or string at c:/test_path/
Email_test_7.pl line 188, <GEN0> line 27252.

Here is the code block the warning relates to:
      my $te = HTML::TableExtract->new();
      $payload =~ s/\r//g;
      my $payload_tmp = $payload;
      $payload_tmp =~ s/\n//g;
      $payload_tmp =~ s/\240//g;
      $te->parse($payload_tmp);
      my ($ts,$tn);
      $tn = 0;
      foreach $ts ($te->tables) {
	my $row;
	my $rown = 0;
	foreach $row ($ts->rows) {
	  next unless defined $row;
	  next unless defined @$row;# not sure about this one, but I tried it
because the join mentioned in the warning uses @$row
	  my $fount = @$row;
	  next unless defined $fount;
	  next if ($fount == 0);
	  my $trow = join(',',@$row);
	  print "\tRow: $rown\t",$trow,"\n";
	  $rown++;
	}
	$tn++;
      }

Since I know the HTML that is producing this output, I just want to
skip over and ignore the rows having cells that have no data.  Since
the warning says I have an 'uninitialized value $row in join or
string', I tried to skip is $row is undefined, and if the row has no
data, but these tests are not having the desired effect.  It is as if
they weren't there.  I don't know why I'd get a message that $row is
undefined and yet a statement "next unless defined $row;" has no
effect.

What did I miss here?


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

Date: Tue, 1 Sep 2009 21:58:30 +0200
From: "Peter J. Holzer" <hjp-usenet2@hjp.at>
Subject: Re: 2 problems parsing output from HTML::TableExtract
Message-Id: <slrnh9qv78.nrt.hjp-usenet2@hrunkner.hjp.at>

On 2009-09-01 18:53, Ted Byers <r.ted.byers@gmail.com> wrote:
> I have to automate parsing email that comes in with its data in an
> HTML file (so I have no control over the content or how it is
> formatted.
>
> HTML::TableExtract has proved priceless in getting this done.
> However, there are two issues that are giving me grief.
>
> The first is probably simple, at least for regex experts.  There are
> characters in the string that, while not a problem in browsers
> displaying the HTML, are a problem for my attempts to refine this data
> down to text I can work with in my other code.  There are a plethora
> of instances of the that Emacs displays as '\240\.

\240 (\x{A0} in hex) is the non-breaking space.

> But the following
> statement doesn't remove them.
>
>      $payload_tmp =~ s/\240//g;

This should work, provided the "\240" is there when you do the
substitution. In HTML, the non-breaking space is often written as
"&nbsp;". Are you sure that you are looking at the text you are feeding
to your script and not some processed version?


> Neither does:
>      $payload_tmp =~ s/\\240//g;

This shouldn't.


>
> I suspect it is a printer/display control character that results in
> the following text being underlined when displayed using a browser
> like MS IE or Firefox.

Please read http://www.w3.org/TR/html401/



[...]

> Use of uninitialized value $row in join or string at c:/test_path/
> Email_test_7.pl line 188, <GEN0> line 27252.
>
> Here is the code block the warning relates to:
[...]
> 	my $row;
> 	my $rown = 0;
> 	foreach $row ($ts->rows) {
> 	  next unless defined $row;
> 	  next unless defined @$row;# not sure about this one, but I tried it
> because the join mentioned in the warning uses @$row
> 	  my $fount = @$row;
> 	  next unless defined $fount;
> 	  next if ($fount == 0);
> 	  my $trow = join(',',@$row);

I assume this is line 188 because it's the only line with a join in it. 
However I don't see how this line can be reached if $row is undefined. 
Are you sure that this is the code you are running?

Please post a short, complete script that we can run. If you post a
short snippet from a longer script it is always possible that the error
is somewhere else. Also, you will probably find the error while trying
to make the script as short as possible and won't have to ask at all.

	hp



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

Date: Tue, 01 Sep 2009 15:03:03 -0500
From: Tad J McClellan <tadmc@seesig.invalid>
Subject: Re: 2 problems parsing output from HTML::TableExtract
Message-Id: <slrnh9qurn.bel.tadmc@tadmc30.sbcglobal.net>

Ted Byers <r.ted.byers@gmail.com> wrote:

> HTML::TableExtract has proved priceless in getting this done.


I often sing its praises myself.


> However, there are two issues that are giving me grief.
>
> The first is probably simple, at least for regex experts.  There are
> characters in the string that, while not a problem in browsers
> displaying the HTML, are a problem for my attempts to refine this data
> down to text I can work with in my other code.  There are a plethora
> of instances of the that Emacs displays as '\240\.


That is from non-breaking spaces (160 in decimal, 240 in octal A0 in hex).

I banish them before calling parse() with:

    $html =~ s/&nbsp;|&#160;/ /g;

usually followed by squeezing spaces:

    $html =~ tr/ / /s;


> The more important question gets down to how to deal with a warning I
> get on some output produced by HTML::TableExtract.
>
> In the html I get, there is one table, but without proper table
> headers, and there are two logical tables in this one HTML table
> separated by rows that have no visible values in their cells.  Those
> cells without useful data cause problems in the output that manifests
  ^^^^^
> with a warning message:
>
> Use of uninitialized value $row in join or string at c:/test_path/
> Email_test_7.pl line 188, <GEN0> line 27252.


I think you meant those _rows_ without useful data?

That is, you want to skip rows that contain no defined values?


> 	foreach $row ($ts->rows) {


    next unless grep defined, @$row;  # skip if all cells are undef


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


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

Date: Tue, 01 Sep 2009 15:40:24 -0500
From: Tad J McClellan <tadmc@seesig.invalid>
Subject: Re: 2 problems parsing output from HTML::TableExtract
Message-Id: <slrnh9r11n.cj8.tadmc@tadmc30.sbcglobal.net>

Peter J. Holzer <hjp-usenet2@hjp.at> wrote:
> On 2009-09-01 18:53, Ted Byers <r.ted.byers@gmail.com> wrote:

>> Use of uninitialized value $row in join or string at c:/test_path/
>> Email_test_7.pl line 188, <GEN0> line 27252.
>>
>> Here is the code block the warning relates to:
> [...]
>> 	my $row;
>> 	my $rown = 0;
>> 	foreach $row ($ts->rows) {
>> 	  next unless defined $row;
>> 	  next unless defined @$row;# not sure about this one, but I tried it
>> because the join mentioned in the warning uses @$row
>> 	  my $fount = @$row;
>> 	  next unless defined $fount;
>> 	  next if ($fount == 0);
>> 	  my $trow = join(',',@$row);
>
> I assume this is line 188 because it's the only line with a join in it. 
> However I don't see how this line can be reached if $row is undefined. 
> Are you sure that this is the code you are running?


I was confused too. The error message is misleading, it is not $row
that is undefined, it is one of the elements in @$row that is undef.


> Please post a short, complete script that we can run.

----------------------
#!/usr/bin/perl
use warnings;
use strict;
use HTML::TableExtract;

my $html =<<ENDHTML;
<html><body>
<table>
    <tr>
        <td>Ted</td>
        <td>Byers</td>
    </tr>
    <tr>
        <td></td>
        <td></td>
    </tr>
    <tr>
        <td>Tad</td>
        <td>McClellan</td>
    </tr>
</table>
</body></html>
ENDHTML

my $te = new HTML::TableExtract( );
$te->parse($html);

foreach my $ts ($te->table_states) {
  foreach my $row ($ts->rows) {
     next unless defined $row;
     print join(',', @$row), "\n";
  }
}
----------------------

OUTPUT:

Ted,Byers
Use of uninitialized value $row in join or string at ./skel line 31.
Use of uninitialized value $row in join or string at ./skel line 31.
,
Tad,McClellan


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


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

Date: Tue, 01 Sep 2009 13:42:17 -0700
From: sln@netherlands.com
Subject: Re: 2 problems parsing output from HTML::TableExtract
Message-Id: <vg1r95t8jkvdi703r33j24lgso9ig31it0@4ax.com>

On Tue, 1 Sep 2009 11:53:33 -0700 (PDT), Ted Byers <r.ted.byers@gmail.com> wrote:

<snip>
>However, there are two issues that are giving me grief.
>
>The first is probably simple, at least for regex experts.  There are
>characters in the string that, while not a problem in browsers
<snip>
>statement doesn't remove them.
>
>     $payload_tmp =~ s/\240//g;
                        ^
would be a rx variable for $240
>
>Neither does:
>     $payload_tmp =~ s/\\240//g;
s/\\240//g;
works for me

<snip>
>The more important question gets down to how to deal with a warning I
>get on some output produced by HTML::TableExtract.
>
>In the html I get, there is one table, but without proper table
>headers, and there are two logical tables in this one HTML table
>separated by rows that have no visible values in their cells.  Those
>cells without useful data cause problems in the output that manifests
>with a warning message:
>
>Use of uninitialized value $row in join or string at c:/test_path/
>Email_test_7.pl line 188, <GEN0> line 27252.
>
>Here is the code block the warning relates to:
>      my $te = HTML::TableExtract->new();
>      $payload =~ s/\r//g;
>      my $payload_tmp = $payload;
>      $payload_tmp =~ s/\n//g;
>      $payload_tmp =~ s/\240//g;
>      $te->parse($payload_tmp);
>      my ($ts,$tn);
>      $tn = 0;
>      foreach $ts ($te->tables) {
>	my $row;
>	my $rown = 0;
>	foreach $row ($ts->rows) {
>	  next unless defined $row;
>	  next unless defined @$row;# not sure about this one, but I tried it
>because the join mentioned in the warning uses @$row
>	  my $fount = @$row;
>	  next unless defined $fount;
>	  next if ($fount == 0);
>	  my $trow = join(',',@$row);
>	  print "\tRow: $rown\t",$trow,"\n";
>	  $rown++;
>	}
>	$tn++;
>      }
<snip>
>What did I miss here?

See below.
-sln
=====================
use strict;
use warnings;

my $string = '
start\\
240\\24
0\\240\\240\\2
40\\240-end
';
print $string,"\n";
$string =~ s/\n//g;
$string =~ s/\\240//g;
#            ^^
#      works for me

print $string,"\n";


my $row = [qw{this is a row of data},undef,undef,'end'];
#                                    ^^^^^ ^^^^^
#                     oh no, undefined elements
#                     join will give warning
#
my $trow = join(',',@$row);
print "$trow\n";

# to fix, rip out the undefined elements in a new copy of row.
# can either strip the undef's:
      my @row_copy = map {defined $_ ? $_ : ()} @$row;
# or can blank them out:
    # my @row_copy = map {defined $_ ? $_ : ()} @$row;
#
$trow = join ',', @row_copy;
print "$trow\n";

__END__

# Lets fix this up, (untested)

      foreach $ts ($te->tables) {
	my $row;
	my $rown = 0;
	foreach $row ($ts->rows) {
	  next if !defined($row);
	  my @row_copy = map {defined $_ ? $_ : ()} @$row;
	  next if !scalar(@row_copy);
	  $trow = join ',', @row_copy;
	  print "\tRow: $rown\t",$trow,"\n";
	  $rown++;
	}
	$tn++;
      



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

Date: Tue, 01 Sep 2009 13:46:09 -0700
From: sln@netherlands.com
Subject: Re: 2 problems parsing output from HTML::TableExtract
Message-Id: <bu1r95taid2ljp6t0ash10gtdnk54flgci@4ax.com>

On Tue, 01 Sep 2009 13:42:17 -0700, sln@netherlands.com wrote:

># or can blank them out:
>    # my @row_copy = map {defined $_ ? $_ : ()} @$row;
                                             ^^
    # my @row_copy = map {defined $_ ? $_ : ''} @$row;

-sln


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

Date: Tue, 1 Sep 2009 13:51:57 -0700 (PDT)
From: Ted Byers <r.ted.byers@gmail.com>
Subject: Re: 2 problems parsing output from HTML::TableExtract
Message-Id: <3e772f9d-9d6f-4353-b3a2-9cfe4fa66747@e34g2000vbm.googlegroups.com>

On Sep 1, 4:46=A0pm, s...@netherlands.com wrote:
> On Tue, 01 Sep 2009 13:42:17 -0700, s...@netherlands.com wrote:
> ># or can blank them out:
> > =A0 =A0# my @row_copy =3D map {defined $_ ? $_ : ()} @$row;
>
> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =
=A0 =A0 =A0 =A0 =A0^^
> =A0 =A0 # my @row_copy =3D map {defined $_ ? $_ : ''} @$row;
>
> -sln

Thanks everyone.  Problem solved; and I learned a bunch too.  ;-)

Cheers

Ted


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

Date: Tue, 01 Sep 2009 13:59:56 -0700
From: sln@netherlands.com
Subject: Re: 2 problems parsing output from HTML::TableExtract
Message-Id: <cc2r95lca3pb12mis30defdjp2g1ebhln9@4ax.com>

On Tue, 01 Sep 2009 13:46:09 -0700, sln@netherlands.com wrote:

>On Tue, 01 Sep 2009 13:42:17 -0700, sln@netherlands.com wrote:
>
>># or can blank them out:
>>    # my @row_copy = map {defined $_ ? $_ : ()} @$row;
>                                             ^^
>    # my @row_copy = map {defined $_ ? $_ : ''} @$row;
>
>-sln

Should you decide to just define blanks instead of deleting
the elements, you won't have to create a temporary array,
just do it in place with this:

   defined $_ or $_ = '' for (@$row);

So, then the code would look something like this:

      foreach $ts ($te->tables) {
	my $row;
	my $rown = 0;
	foreach $row ($ts->rows) {
	  next if (!defined($row) or !@$row);
	  defined $_ or $_ = '' for (@$row);  # just blank undef's
	  $trow = join ',', @$row;
	  print "\tRow: $rown\t",$trow,"\n";
	  $rown++;
	}
	$tn++;

-sln
  


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

Date: Tue, 01 Sep 2009 17:19:48 -0400
From: "Uri Guttman" <uri@StemSystems.com>
Subject: Re: 2 problems parsing output from HTML::TableExtract
Message-Id: <87hbvmtlaj.fsf@quad.sysarch.com>

>>>>> "s" == sln  <sln@netherlands.com> writes:

  s> Should you decide to just define blanks instead of deleting
  s> the elements, you won't have to create a temporary array,
  s> just do it in place with this:

  s>    defined $_ or $_ = '' for (@$row);

  s> 	  defined $_ or $_ = '' for (@$row);  # just blank undef's
  s> 	  $trow = join ',', @$row;

you can merge those with a map:

	$trow = join ',', map { defined ? $_ : '' } @$row;

and if you are using 5.10 with the defined or op // that is even
simpler:

	$trow = join ',', map { $_ // '' } @$row;

and with 5.10 the for modifier line could also become:

	$_ //= '' for @{$row} ;
  
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, 1 Sep 2009 22:40:34 +0100
From: Ben Morrow <ben@morrow.me.uk>
Subject: Re: 2 problems parsing output from HTML::TableExtract
Message-Id: <ivg0n6-qr62.ln1@osiris.mauzo.dyndns.org>


Quoth "Uri Guttman" <uri@StemSystems.com>:
> >>>>> "s" == sln  <sln@netherlands.com> writes:
> 
>   s> Should you decide to just define blanks instead of deleting
>   s> the elements, you won't have to create a temporary array,
>   s> just do it in place with this:
> 
>   s>    defined $_ or $_ = '' for (@$row);
> 
>   s> 	  defined $_ or $_ = '' for (@$row);  # just blank undef's
>   s> 	  $trow = join ',', @$row;
> 
> you can merge those with a map:
> 
> 	$trow = join ',', map { defined ? $_ : '' } @$row;
> 
> and if you are using 5.10 with the defined or op // that is even
> simpler:
> 
> 	$trow = join ',', map { $_ // '' } @$row;

Meh. Those are all ugly. I much prefer

    {
        no warnings "uninitialized";
        $trow = join ",", @$row;
    }

and would probably push the no warnings out further than that much of
the time.

I find it really annoying that no warnings "uninitialized" has such a
long and typo-prone name, since it's the warnings category I use most
often. no warnings "undef" would have been much simpler.

Ben



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

Date: Tue, 1 Sep 2009 22:36:55 +0100
From: Ben Morrow <ben@morrow.me.uk>
Subject: Re: 2 problems parsing output from HTML::TableExtract
Message-Id: <nog0n6-qr62.ln1@osiris.mauzo.dyndns.org>


Quoth Tad J McClellan <tadmc@seesig.invalid>:
> 
> I was confused too. The error message is misleading, it is not $row
> that is undefined, it is one of the elements in @$row that is undef.
<snip>
> 
> foreach my $ts ($te->table_states) {
>   foreach my $row ($ts->rows) {
>      next unless defined $row;
>      print join(',', @$row), "\n";
>   }
> }
> ----------------------
> 
> OUTPUT:
> 
> Ted,Byers
> Use of uninitialized value $row in join or string at ./skel line 31.

I presume this is 5.10.0? Someone should file a bug report.

Ben



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

Date: Tue, 01 Sep 2009 18:04:02 -0400
From: "Uri Guttman" <uri@StemSystems.com>
Subject: Re: 2 problems parsing output from HTML::TableExtract
Message-Id: <874ormtj8t.fsf@quad.sysarch.com>

>>>>> "BM" == Ben Morrow <ben@morrow.me.uk> writes:

  BM> Quoth "Uri Guttman" <uri@StemSystems.com>:
  >> 
  >> $trow = join ',', map { defined ? $_ : '' } @$row;
  >> 
  >> $trow = join ',', map { $_ // '' } @$row;

  BM> Meh. Those are all ugly. I much prefer

  BM>     {
  BM>         no warnings "uninitialized";
  BM>         $trow = join ",", @$row;
  BM>     }

that needs a block, and is longer. and i don't like to use the warnings
pragma unless absolutely necessary. just my style vs yours.

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, 01 Sep 2009 17:08:34 -0500
From: Tad J McClellan <tadmc@seesig.invalid>
Subject: Re: 2 problems parsing output from HTML::TableExtract
Message-Id: <slrnh9r671.dh8.tadmc@tadmc30.sbcglobal.net>

Ben Morrow <ben@morrow.me.uk> wrote:
>
> Quoth Tad J McClellan <tadmc@seesig.invalid>:
>> 
>> I was confused too. The error message is misleading, it is not $row
>> that is undefined, it is one of the elements in @$row that is undef.
><snip>
>> 
>> foreach my $ts ($te->table_states) {
>>   foreach my $row ($ts->rows) {
>>      next unless defined $row;
>>      print join(',', @$row), "\n";
>>   }
>> }
>> ----------------------
>> 
>> OUTPUT:
>> 
>> Ted,Byers
>> Use of uninitialized value $row in join or string at ./skel line 31.
>
> I presume this is 5.10.0? 


Yes.

With 5.8.8 the output is:

Ted,Byers
Use of uninitialized value in join or string at ./skel line 31.
Use of uninitialized value in join or string at ./skel line 31.
,
Tad,McClellan


> Someone should file a bug report.


OK, I'll do that later today.


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


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

Date: Wed, 2 Sep 2009 00:23:40 +0200
From: "Peter J. Holzer" <hjp-usenet2@hjp.at>
Subject: Re: 2 problems parsing output from HTML::TableExtract
Message-Id: <slrnh9r7nd.pnk.hjp-usenet2@hrunkner.hjp.at>

On 2009-09-01 20:40, Tad J McClellan <tadmc@seesig.invalid> wrote:
> Peter J. Holzer <hjp-usenet2@hjp.at> wrote:
>> On 2009-09-01 18:53, Ted Byers <r.ted.byers@gmail.com> wrote:
>>> Use of uninitialized value $row in join or string at c:/test_path/
>>> Email_test_7.pl line 188, <GEN0> line 27252.
>>>
>>> Here is the code block the warning relates to:
>> [...]
>>> 	foreach $row ($ts->rows) {
>>> 	  next unless defined $row;
[...]
>>> 	  my $trow = join(',',@$row);
>>
>> I assume this is line 188 because it's the only line with a join in it. 
>> However I don't see how this line can be reached if $row is undefined. 
>> Are you sure that this is the code you are running?
>
>
> I was confused too. The error message is misleading, it is not $row
> that is undefined, it is one of the elements in @$row that is undef.

Ah, yes. That makes sense.

	hp


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

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


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