[31945] in Perl-Users-Digest

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

Perl-Users Digest, Issue: 3208 Volume: 11

daemon@ATHENA.MIT.EDU (Perl-Users Digest)
Fri Nov 12 18:09:23 2010

Date: Fri, 12 Nov 2010 15:09:07 -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           Fri, 12 Nov 2010     Volume: 11 Number: 3208

Today's topics:
    Re: Can't figure out why I'm getting "Bareword found wh <peter@makholm.net>
        Can't figure out why I'm getting "Bareword found where  <laredotornado@zipmail.com>
    Re: Can't figure out why I'm getting "Bareword found wh <willem@turtle.stack.nl>
    Re: Foreach <whynot@pozharski.name>
    Re: Foreach <tzz@lifelogs.com>
        if ('A:B:C' =~ /:(.*?)$/) then why the heck is $1 'B:C' <ravensdean@googlemail.com>
    Re: if ('A:B:C' =~ /:(.*?)$/) then why the heck is $1 ' sln@netherlands.com
    Re: if ('A:B:C' =~ /:(.*?)$/) then why the heck is $1 ' <kst-u@mib.org>
    Re: if ('A:B:C' =~ /:(.*?)$/) then why the heck is $1 ' <uri@StemSystems.com>
    Re: if ('A:B:C' =~ /:(.*?)$/) then why the heck is $1 ' <NoSpamPleaseButThisIsValid3@gmx.net>
    Re: if ('A:B:C' =~ /:(.*?)$/) then why the heck is $1 ' <derykus@gmail.com>
        Indicating dependencies in multi-file xs compiles <stanley@peak.org>
    Re: perl  html parser sln@netherlands.com
    Re: testing whether a number is an integer <cartercc@gmail.com>
        Digest Administrivia (Last modified: 6 Apr 01) (Perl-Users-Digest Admin)

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

Date: Fri, 12 Nov 2010 18:36:21 +0100
From: Peter Makholm <peter@makholm.net>
Subject: Re: Can't figure out why I'm getting "Bareword found where operator expected ..."
Message-Id: <87lj4yphpm.fsf@vps1.hacking.dk>

laredotornado <laredotornado@zipmail.com> writes:

>                                 if ($error_text =~ m/(^|[ \t\r\n])
> ((ftp|http|https|gopher|mailto|news|nntp|telnet|wais|file|prospero|aim|
> webcal):(([A-Za-z0-9$_.+!*(),;/?:@&~=-])|%[A-Fa-f0-9]{2}){2,}(#([a-zA-
> Z0-9][a-zA-Z0-9$_.+!*(),;/?:@&~=%-]*))?([A-Za-z0-9$_+!*();/?:~-]))/) {

You got five '/' in that line and the match operator is terminated by
the second. So the rest of the line is actually junk code which
confuses perl in different ways. You should either use another
seperartor or escape the slashes in you regexp.

//Makholm


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

Date: Fri, 12 Nov 2010 09:21:43 -0800 (PST)
From: laredotornado <laredotornado@zipmail.com>
Subject: Can't figure out why I'm getting "Bareword found where operator expected ..."
Message-Id: <855b4e9a-bbac-4264-a9ef-daba5a7f0f68@n10g2000prj.googlegroups.com>

Hi,

I'm using Perl 5.8.9 for Mac 10.6.3.  I'm found an expression to match
URLs in text (http://www.truerwords.net/articles/ut/
urlactivation.html), but I'm getting a syntax error for my line ...

                                if ($error_text =~ m/(^|[ \t\r\n])
((ftp|http|https|gopher|mailto|news|nntp|telnet|wais|file|prospero|aim|
webcal):(([A-Za-z0-9$_.+!*(),;/?:@&~=-])|%[A-Fa-f0-9]{2}){2,}(#([a-zA-
Z0-9][a-zA-Z0-9$_.+!*(),;/?:@&~=%-]*))?([A-Za-z0-9$_+!*();/?:~-]))/) {


Specifically, the errors are

Bareword found where operator expected at log_analyzer.pl line 92,
near "%[A"
	(Missing operator before A?)
syntax error at log_analyzer.pl line 92, near "?:"
syntax error at log_analyzer.pl line 93, near ""found url: $error_text
\n";"
Unmatched right curly bracket at log_analyzer.pl line 108, at end of
line
syntax error at log_analyzer.pl line 108, near "}"

Can anyone provide guidance as to how I can cure these syntax errors?
Thanks, - Dave


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

Date: Fri, 12 Nov 2010 17:35:30 +0000 (UTC)
From: Willem <willem@turtle.stack.nl>
Subject: Re: Can't figure out why I'm getting "Bareword found where operator expected ..."
Message-Id: <slrnidqun2.1u08.willem@turtle.stack.nl>

laredotornado wrote:
) Hi,
)
) I'm using Perl 5.8.9 for Mac 10.6.3.  I'm found an expression to match
) URLs in text (http://www.truerwords.net/articles/ut/
) urlactivation.html), but I'm getting a syntax error for my line ...
)
)                                 if ($error_text =~ m/(^|[ \t\r\n])
) ((ftp|http|https|gopher|mailto|news|nntp|telnet|wais|file|prospero|aim|
) webcal):(([A-Za-z0-9$_.+!*(),;/?:@&~=-])|%[A-Fa-f0-9]{2}){2,}(#([a-zA-
) Z0-9][a-zA-Z0-9$_.+!*(),;/?:@&~=%-]*))?([A-Za-z0-9$_+!*();/?:~-]))/) {

You need to escape the slashes.
Or use a different delimiter for the m// operator.


SaSW, Willem
-- 
Disclaimer: I am in no way responsible for any of the statements
            made in the above text. For all I know I might be
            drugged or something..
            No I'm not paranoid. You all think I'm paranoid, don't you !
#EOT


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

Date: Fri, 12 Nov 2010 10:18:35 +0200
From: Eric Pozharski <whynot@pozharski.name>
Subject: Re: Foreach
Message-Id: <slrnidpu2r.i56.whynot@orphan.zombinet>

with <87mxpfhb6n.fsf@lifelogs.com> Ted Zlatanov wrote:
*SKIP*
> OTOH I wouldn't use map in a void context in code I plan to put on CPAN
> or publish openly.  I don't want a thousand Uris telling me it's wrong;
> arguing such things is a waste of time but the annoyance will linger.

I've just checked.  B<map> in void context is use-warnings clean.  But
one day it could change.

*CUT*

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


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

Date: Fri, 12 Nov 2010 09:11:09 -0600
From: Ted Zlatanov <tzz@lifelogs.com>
Subject: Re: Foreach
Message-Id: <87tyjmfugi.fsf@lifelogs.com>

On Thu, 11 Nov 2010 15:49:55 -0500 "Uri Guttman" <uri@StemSystems.com> wrote: 

>>>>>> "TZ" == Ted Zlatanov <tzz@lifelogs.com> writes:

TZ> I really don't think it's such a big deal.  Yeah, it's not ideal, but
TZ> it's hardly a crime against humanity.  I really, really doubt it will
TZ> cause maintenance problems long-term (as long as you're sure of having
TZ> Perl 5.8 or later).  And it's quite readable.

UG> readable or not, it is misleading to the reader. see my other post on that.

I disagree and your posts have not convinced me.  Please note that
unlike you and most others in this thread, I'm giving a nuanced opinion.

TZ> So judge the audience for your code and write it accordingly.  When in
TZ> doubt, be conservative, explicit, and simple.

UG> the audience judges your code, you don't judge the audience!

Please don't play word games.  I clearly meant "judge" as in "to form an
opinion through careful weighing of evidence" not "to sit in judgment of."

On Fri, 12 Nov 2010 10:18:35 +0200 Eric Pozharski <whynot@pozharski.name> wrote: 

EP> with <87mxpfhb6n.fsf@lifelogs.com> Ted Zlatanov wrote:
EP> *SKIP*
>> OTOH I wouldn't use map in a void context in code I plan to put on CPAN
>> or publish openly.  I don't want a thousand Uris telling me it's wrong;
>> arguing such things is a waste of time but the annoyance will linger.

EP> I've just checked.  B<map> in void context is use-warnings clean.  But
EP> one day it could change.

I try not to worry about that very unlikely event.

Ted


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

Date: Fri, 12 Nov 2010 06:38:08 -0800 (PST)
From: OwlHoot <ravensdean@googlemail.com>
Subject: if ('A:B:C' =~ /:(.*?)$/) then why the heck is $1 'B:C' and not just 'C'
Message-Id: <feff63ef-7921-4d4b-b5b1-dd715e004197@w21g2000vby.googlegroups.com>

To repeat the title, in case it is munged by Google Groups:

  if ('A:B:C' =~ /:(.*?)$/) then why the heck is $1 'B:C' and not just
'C'

I've been developing with perl for years; but even simple things in it
still
sometimes throw up surprises.

The regexp /:(.*?)$/ is anchored on the right by $, then comes a non-
greedy
match which, AIUI, is the "shortest string it can get away with",
preceded
by a colon. So I would expect this to pick up just the "C", as it does
with
  /([^:]*)$/.

Am I assuming/doing something silly? It is friday afternoon after all.


Cheers

John R Ramsden


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

Date: Fri, 12 Nov 2010 07:28:28 -0800
From: sln@netherlands.com
Subject: Re: if ('A:B:C' =~ /:(.*?)$/) then why the heck is $1 'B:C' and not just 'C'
Message-Id: <khmqd65ptisrjf63hq4n7566bp0fthq152@4ax.com>

On Fri, 12 Nov 2010 06:38:08 -0800 (PST), OwlHoot <ravensdean@googlemail.com> wrote:

>To repeat the title, in case it is munged by Google Groups:
>
>  if ('A:B:C' =~ /:(.*?)$/) then why the heck is $1 'B:C' and not just
>'C'
>
>I've been developing with perl for years; but even simple things in it
>still
>sometimes throw up surprises.
>
>The regexp /:(.*?)$/ is anchored on the right by $, then comes a non-
>greedy
>match which, AIUI, is the "shortest string it can get away with",
>preceded
>by a colon. So I would expect this to pick up just the "C", as it does
>with
>  /([^:]*)$/.
>

Its not the shortest, its the first to satisfy it.
It is anchored on the left and right. The regex is allowing
another ':' when it traverses the string from the left.
/:(.*)$/ has the same result without checking chars between the
first ':' and the end of string.

Notice that /:(.*?):/ does the same thing, it says get all between
the first ':' and the next ':'. However,
  'A:B:C:D' =~ /:(.*):/
greedily grabs all between the first and last ':', but
  'A:B:C:D' =~ /:(.*?):/
grabs only that between the first 2 ':'s.

Since there is only one end of line, it gets all between the first ':'
and end of line regardless of ?.

-sln


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

Date: Fri, 12 Nov 2010 08:44:36 -0800
From: Keith Thompson <kst-u@mib.org>
Subject: Re: if ('A:B:C' =~ /:(.*?)$/) then why the heck is $1 'B:C' and not just 'C'
Message-Id: <lnhbfm5w5n.fsf@nuthaus.mib.org>

Wolf Behrenhoff <NoSpamPleaseButThisIsValid3@gmx.net> writes:
> On 12.11.2010 15:38, OwlHoot wrote:
>> To repeat the title, in case it is munged by Google Groups:
>> 
>>   if ('A:B:C' =~ /:(.*?)$/) then why the heck is $1 'B:C' and not just
>> 'C'

You should ask your question in the body of your message anyway.
Newsreaders vary in how they display subject lines.

>> I've been developing with perl for years; but even simple things in
>> it still sometimes throw up surprises.
>> 
>> The regexp /:(.*?)$/ is anchored on the right by $, then comes a non-
>> greedy match which, AIUI, is the "shortest string it can get away
>> with", preceded by a colon. So I would expect this to pick up just
>> the "C", as it does with
>>   /([^:]*)$/.
>
> The regexp matches from the left to the right, even if there is an
> anchor on the right side of the string.
>
[more explanation snipped]
>
> Anyway, you could also use (split /:/, 'A:B:C')[-1] here.

Another possibility is
    if ('A:B:C' =~ /:([^:]*)$/)

-- 
Keith Thompson (The_Other_Keith) kst-u@mib.org  <http://www.ghoti.net/~kst>
Nokia
"We must do something.  This is something.  Therefore, we must do this."
    -- Antony Jay and Jonathan Lynn, "Yes Minister"


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

Date: Fri, 12 Nov 2010 16:19:55 -0500
From: "Uri Guttman" <uri@StemSystems.com>
Subject: Re: if ('A:B:C' =~ /:(.*?)$/) then why the heck is $1 'B:C' and not just 'C'
Message-Id: <87sjz6p7d0.fsf@quad.sysarch.com>

>>>>> "O" == OwlHoot  <ravensdean@googlemail.com> writes:

  O> The regexp /:(.*?)$/ is anchored on the right by $, then comes a non-
  O> greedy
  O> match which, AIUI, is the "shortest string it can get away with",
  O> preceded
  O> by a colon. So I would expect this to pick up just the "C", as it does
  O> with
  O>   /([^:]*)$/.

as others have said, you didn't get what ? does for quantifiers. perl
will match the leftmost working match. with a greedy quantifier, it will
continue to match chars until it fails and then stop. with the
non-greedy modifier ? it will stop after the first (and locally
shortest) match. it will not globally find the shortest possible match
anywhere in the string. so the key is remembering leftmost correct match
first and then short or greedy based on the modifier.

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: Fri, 12 Nov 2010 15:56:11 +0100
From: Wolf Behrenhoff <NoSpamPleaseButThisIsValid3@gmx.net>
Subject: Re: if ('A:B:C' =~ /:(.*?)$/) then why the heck is $1 'B:C' and not just 'C'
Message-Id: <4cdd558c$0$6880$9b4e6d93@newsspool2.arcor-online.net>

On 12.11.2010 15:38, OwlHoot wrote:
> To repeat the title, in case it is munged by Google Groups:
> 
>   if ('A:B:C' =~ /:(.*?)$/) then why the heck is $1 'B:C' and not just
> 'C'
> 
> I've been developing with perl for years; but even simple things in it
> still
> sometimes throw up surprises.
> 
> The regexp /:(.*?)$/ is anchored on the right by $, then comes a non-
> greedy
> match which, AIUI, is the "shortest string it can get away with",
> preceded
> by a colon. So I would expect this to pick up just the "C", as it does
> with
>   /([^:]*)$/.

The regexp matches from the left to the right, even if there is an
anchor on the right side of the string.

Thus the : first tries to match first : in your string, i.e the one
between A and B. Then .*? tries to match any number of chars, starting
from zero because of then ?. But if zero chars are matched, the $ fails.
So the regexp tries to make the number of characters matched by the .*?
longer and longer, and finally the $ matches. The regexp does not need
to go back and select the next : in this case.

 .*? means: take as few chars as possible _at this position_
It does not mean: do backtracking and try to find if it could match
fewer chars at some other place in the string

So if you add .* to the beginning, you will get the last : in your string.
/.*:(.*?)$/
In this case the .* would try to eat as many chars as possible, then
search for a :. So this would try the last : first.

Anyway, you could also use (split /:/, 'A:B:C')[-1] here.

Cheers, Wolf


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

Date: Fri, 12 Nov 2010 12:55:28 -0800 (PST)
From: "C.DeRykus" <derykus@gmail.com>
Subject: Re: if ('A:B:C' =~ /:(.*?)$/) then why the heck is $1 'B:C' and not just 'C'
Message-Id: <0ebbe9cd-701d-46ff-984a-3b2628498657@u25g2000pra.googlegroups.com>

On Nov 12, 8:44=A0am, Keith Thompson <ks...@mib.org> wrote:

 ...

>
> > Anyway, you could also use (split /:/, 'A:B:C')[-1] here.
>
> Another possibility is
> =A0 =A0 if ('A:B:C' =3D~ /:([^:]*)$/)
>

Yet another:

      'A:B:C' =3D~ /.*:(.*)/;



--
Charles DeRykus




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

Date: Fri, 12 Nov 2010 08:58:26 -0800
From: John Stanley <stanley@peak.org>
Subject: Indicating dependencies in multi-file xs compiles
Message-Id: <alpine.LRH.2.00.1011120832090.24639@shell.peak.org>


G'day, all.

I'm working on a package written by someone else (Math::Matlab::Engine), 
which started out with one .xs file containing all the code. This file has 
gotten too large for this mortal to understand, so I split most of the 
functions off into their own files and now INCLUDE them in the main .xs 
file (Engine.xs). This has created two potentially related problems.

1. How do I tell "the system" that Engine.xs is dependent upon, e.g, a.xs,
    b.xs, and c.xs, so that changes to a.xs will cause 'make' to recompile
    Engine.xs?

2. To work around #1, I've been touching Engine.xs before I 'make'. Even
    when I do that, Engine.c often doesn't get rebuilt from the xs and the
    compiler continues to report errors that I've corrected in the xs
    source.

I've read through the MakeMaker, MakeMaker::Tutorial and MakeMaker::FAQ 
docs on perl.org, but I don't see any option to put in the Makefile.PL to 
record this dependency. I did a "perl Makefile.PL" and I see all the 
source files listed in the generated Makefile, but they aren't listed as 
dependencies.





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

Date: Fri, 12 Nov 2010 09:58:10 -0800
From: sln@netherlands.com
Subject: Re: perl  html parser
Message-Id: <kctqd6tth3u7chmvrmt03giie8lfu8fe41@4ax.com>

On 11 Nov 2010 13:06:53 GMT, kevin kitenik <kitenik@gmail.com> wrote:

>Hi everybody,
>
>i have a piece of html file, that countain special if-then-else statements :
>like these ones:
><if condition="$vboptions['hometitle']"><a href="$vboptions[homeurl]">$vboptions[hometitle]</a> -</
>if>
><if condition="$vboptions[privacyurl]"><a href="$vboptions[privacyurl]"><else><tr><td>test here
></if>
>
>thos i statement can be imbricated :
>if ... then   ...
>else 
>	if  .. then ...
>	fi
>fi
>
>
>the problem is i awant a wat to tansform these staments to :
>((cond1)) ? (exec1)) : ((exec2))    styles.
>
>how can i do this ???
>i used the cpan without any succes !!
>
>use Parse::RecDescent;
>my @s=( q{<if condition="$vboptions['hometitle']"> <a href="$vboptions[homeurl]">$vboptions
>[hometitle]</a> - </if>});
>
>&pars;
>sub pars {
>        my $parser = new Parse::RecDescent( q{
>startrule:      S
>S:              if ifC '">' then S else S fi {$return="(($item[2]) ? (\"$item[5]\") : ($item[7]))";}
>                | if ifC '">' then S fi {$return="(($item[2]) ? (\"$item[5]\") : (\"\"))";}
>                | html {$return=$item[1];}
>if:             '<if condition="'
>fi:             '</if>'
>ifC:            /[^"]+/
>then:           ''
>else:           '<else>' | '<else />'
>html:          /[\w\d_\$,\[\] ="\/\<\>-]+/          });
>foreach my $s (@s){
>  print $s . ":\n" . $parser->startrule( $s ) . "\n"} }
>
>
>i thank you in advance, for any syggestions, cause i have a headeack ;-)

I'm not supprised you have a headache.
You could see what its doing if you set $::RD_TRACE = 1;

Lets look at one of your data strings.
 q{<if condition="$vboptions[privacytitle]"><a href="$vboptions[privacyurl]">
      <else><tr><td> test here
  </if>}

-----------------------------------
use strict;
use warnings;
use Parse::RecDescent;


$::RD_TRACE = 1;

my @s=(
 q{<if condition="$vboptions[privacytitle]"><a href="$vboptions[privacyurl]">
      <else><tr><td> test here
  </if>}
);

&pars;

sub pars {
        my $parser = new Parse::RecDescent( q{

startrule:      S
S:              if ifC '">' then S else S fi {$return="(($item[2]) ? (\"$item[5]\") : ($item[7]))";}
                | if ifC '">' then S fi {$return="(($item[2]) ? (\"$item[5]\") : (\"\"))";}
                | html {$return=$item[1];}

if:             '<if condition="'
fi:             '</if>'
ifC:            /[^"]*/
then:           ''
else:           '<else>' | '<else />'
html:          /[\w\d_\$,\[\] ="\/<>-]+/          });
  foreach my $s (@s)
  {
    print "\n",'+'x30,"\n",$s,":\n",'-'x30,"\n", ($parser->startrule( $s )),"\n";
  }
}

__END__
-----------------------------------


The first time through S, it finds 
  if ifC '">' then 
which is 
 if:   $item[1] -  '<if condition="'  (literal)
 ifC:  $item[2] -  '$vboptions[privacytitle]' =~ /[^"]+/
       $item[3] -  '">'  (literal)
 then: $item[4] -  '' (literal)

Then it recurses S, it finds
  html
which is
  $item[5] - '<a href="$vboptions[privacyurl]">' =~ /[\w\d_\$,\[\] ="\/<>-]+/

Back from recursion, it then finds
  else
which is
  $item[6] - '<else>' (literal)

Then, recurse S again, it finds
  html
which is
  $item[7] - '<tr><td> test here' =~ /[\w\d_\$,\[\] ="\/<>-]+/

Back from recursion, it then finds
  fi
which is
  $item[8] - '</fi>' (literal)

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


This code will produce a proper result if and
only if there is a separator between 

    S (separator) else
and
    S (separator) fi

that is NOT in the html production /[\w\d_\$,\[\] ="\/<>-]+/.

This can be a TAB or a NewLine because that is not in the character
class of that regex.

For example, this:
     q{<if condition="$vboptions[privacytitle]"><a href="$vboptions[privacyurl]"><else>
          <tr><td> test here
       </if>}
   will fail because 
     '<a href="$vboptions[privacyurl]"><else>' =~ /[\w\d_\$,\[\] ="\/<>-]+/
   will match, taking else: with it

And,
   q{<if condition="$vboptions[privacytitle]"><a href="$vboptions[privacyurl]">
      <else><tr><td> test here  </if>}
   will fail because 
     '<tr><td> test here  </if>' =~ /[\w\d_\$,\[\] ="\/<>-]+/
   will match, taking fi: with it

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The regular expressions (as you have them there) are independent.
They are not set up to backtrack.
I think that backtracking is available as a more advanced production concept,
however this can't be done with something as trivial as 
    /[\w\d_\$,\[\] ="\/<>-]+/
Indeed, the whole realm of discreet, character level parsing is needed for markup.

If however, you are in control of creating the input data, just fashion it so
that known delimeters are inserted where necessary. Then you can generate the correct
html, or whatever it is you are doing.

-sln


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

Date: Fri, 12 Nov 2010 06:28:13 -0800 (PST)
From: ccc31807 <cartercc@gmail.com>
Subject: Re: testing whether a number is an integer
Message-Id: <8274dad3-d982-40af-8d0d-88cf93625fba@g2g2000vbe.googlegroups.com>

On Nov 11, 1:19=A0pm, "Dr.Ruud" <rvtol+use...@xs4all.nl> wrote:
> On 2010-11-11 01:28, ccc31807 wrote:
>
> > I guess my beef is that Perl lacks this kind of predicate
>
> Bullocks:
>
> =A0 =A0 die "Problems in row $." if @courses % 3;

Ha, ha, ha!

Nice and sweet. Except I'll use warn() instead of die() since there's
no reason not to process the rest of the rows if one is malformed.

Thanks, CC.


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

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


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