[32023] in Perl-Users-Digest

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

Perl-Users Digest, Issue: 3287 Volume: 11

daemon@ATHENA.MIT.EDU (Perl-Users Digest)
Wed Feb 16 03:09:31 2011

Date: Wed, 16 Feb 2011 00:09:12 -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           Wed, 16 Feb 2011     Volume: 11 Number: 3287

Today's topics:
    Re: Hashes are good, but not good enough. <tzz@lifelogs.com>
    Re: Hashes are good, but not good enough. <nospam-abuse@ilyaz.org>
    Re: Hashes are good, but not good enough. <nospam-abuse@ilyaz.org>
    Re: How to use (??{code}) correctly in foreach loop? <nospam-abuse@ilyaz.org>
    Re: How to use (??{code}) correctly in foreach loop? <derykus@gmail.com>
        Regex question; match <br> after opening tag <jwcarlton@gmail.com>
    Re: Regex question; match <br> after opening tag <jurgenex@hotmail.com>
    Re: Regex question; match <br> after opening tag <jwcarlton@gmail.com>
    Re: Regex question; match <br> after opening tag <tadmc@seesig.invalid>
    Re: Regex question; match <br> after opening tag <jwcarlton@gmail.com>
    Re: Subroutine exec redefined warning with perl 5.12.2 <derykus@gmail.com>
        warn on print if 1,3 jidanni@jidanni.org
    Re: warn on print if 1,3 <derykus@gmail.com>
    Re: warn on print if 1,3 <uri@StemSystems.com>
    Re: warn on print if 1,3 <derykus@gmail.com>
    Re: warn on print if 1,3 <uri@StemSystems.com>
        Digest Administrivia (Last modified: 6 Apr 01) (Perl-Users-Digest Admin)

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

Date: Tue, 15 Feb 2011 09:02:15 -0600
From: Ted Zlatanov <tzz@lifelogs.com>
Subject: Re: Hashes are good, but not good enough.
Message-Id: <8739npjq88.fsf@lifelogs.com>

On Mon, 14 Feb 2011 19:27:09 -0800 Xho Jingleheimerschmidt <xhoster@gmail.com> wrote: 

XJ> Ted Zlatanov wrote:
>> 
>> Hundreds of millions of hash keys will take up a lot of memory, probably
>> unnecessarily. 

XJ> Any space is unnecessary.  I could always just throw the problem over
XJ> the wall to someone else,

(AKA "put it in a database", and of course databases are *engineered* to
store and index large amounts of data)

Any time you take an argument to extremes it sounds awkward.  As I keep
asking, why do you need hundreds of millions of keys?  Are you actually
going to use the values?  What's the usage pattern?  My point is that
"just stuff hundreds of millions of keys in a hash" is VERY likely not
the answer to any actual need and experienced programmers know that.

>> Iterating through them will be painful even unsorted 

XJ> Painful for whom?  Does a CPU feel pain?  And if so, do I care?

For the user waiting for the results.  Again, what's the usage pattern?
Will you need to iterate?  If so, how quickly do you need the results?
Do you mind waiting for one CPU to crunch the data?  Or are you going to
fork or use threads?  You'll certainly have time to think about this
while you're waiting for Perl to sputter through the opcodes in a tight
loop, busting the cachelines every time.

>> (as with any large amount of data, it's the management that's hard,
>> not accumulating it).  I would *at least* partition the keys with a
>> multi-level hash.

XJ> What would that get you?  Would the CPU suffer less pain iterating over it?

Yes, and then it would have more time to compose register limericks.

AX RAX RIP RIP RIP
DI DI AX AX AX
SI DI IP
DI SI RIP
RAX AX EIP!

Ted


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

Date: Wed, 16 Feb 2011 03:47:05 +0000 (UTC)
From: Ilya Zakharevich <nospam-abuse@ilyaz.org>
Subject: Re: Hashes are good, but not good enough.
Message-Id: <slrnilmi5p.ivd.nospam-abuse@powdermilk.math.berkeley.edu>

On 2011-02-14, Ted Zlatanov <tzz@lifelogs.com> wrote:
> IZ> ???!!!  How comes?  If what I need is a hash-like semantic, and I need
> IZ> "hundreds of millions of keys", why would not I use hash?  I never
> IZ> programmed in this "any language", so you can reduce your arguments to
> IZ> Perl.  Again, to be specific, assume that this particular process has
> IZ> ulimit of 100GB heap, and other processes do not use much memory, so
> IZ> there won't be any swapping...

> Hundreds of millions of hash keys will take up a lot of memory, probably
> unnecessarily.

What makes this "probable"?  Possibly, it is "possible", but we saw no
indication which would support your conjecture...

> Iterating through them will be painful even unsorted (as
> with any large amount of data, it's the management that's hard, not
> accumulating it).

It will be much less painful with a hash than with any other tool I
know.  What do you have in mind?

>  I would *at least* partition the keys with a multi-level hash.

Do not see how this would change anything...

I suspect that (subconciously?) you base your experience on obsolete
brain-damaged filesystems Unix is famous for.  (See your suggestion on
multi-level keys.)  "Just do not create a directory with hundreds of
millions of files" - should be trivial with a smart enough filesystem.

Ilya

P.S.  Here, I assume a good enough hashing function.  With
      brain-damaged hash functions, multilevel keys may help to weed out
      collisions quickier.

      Personally, I do not know how Perl hashing function performes on
      large real-life data sets.  At some time I repaired a couple of
      bad bits in the hashing function, but, of course, it may have
      been not enough.  Devel::Peek reports the "hashing quality" for
      Perl hashes, so it is easy to check now for any particular set.


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

Date: Wed, 16 Feb 2011 03:53:07 +0000 (UTC)
From: Ilya Zakharevich <nospam-abuse@ilyaz.org>
Subject: Re: Hashes are good, but not good enough.
Message-Id: <slrnilmih3.ivd.nospam-abuse@powdermilk.math.berkeley.edu>

On 2011-02-15, Ted Zlatanov <tzz@lifelogs.com> wrote:
>>> Hundreds of millions of hash keys will take up a lot of memory, probably
>>> unnecessarily. 
>
> XJ> Any space is unnecessary.  I could always just throw the problem over
> XJ> the wall to someone else,
>
> (AKA "put it in a database", and of course databases are *engineered* to
> store and index large amounts of data)

So are Perl hashes - and I expect they are going to be order(s?) of
magnitude more space efficient and quickier than databases.  (Provided
that memory holds enough water.)

>>> Iterating through them will be painful even unsorted 
>
> XJ> Painful for whom?  Does a CPU feel pain?  And if so, do I care?
>
> For the user waiting for the results.

I expect the opposite.  (But only based on "theoretical experience". ;-)

Which database can efficently serve hundreds of millions of records
without (excessive) disk access with 200bytes of memory/per/record
footprint?

Ilya


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

Date: Tue, 15 Feb 2011 18:51:13 +0000 (UTC)
From: Ilya Zakharevich <nospam-abuse@ilyaz.org>
Subject: Re: How to use (??{code}) correctly in foreach loop?
Message-Id: <slrnillip1.hmn.nospam-abuse@powdermilk.math.berkeley.edu>

On 2011-02-14, Peng Yu <pengyu.ut@gmail.com> wrote:
>> my @offsets=();
>>
>> foreach my $s (@strings)
>> {
>> @offsets=();
>> {use re 'eval'; $s =~ /(?=\Q$pattern\E)(??{push @offsets, $-[0]})/g }
>> print "Offsets of $s: @offsets\n"
>>
>> }

> This works. Thank you!
> Also, I don't quite understand why "my @offsets;" has to be moved out
> of the loop.

This one is new to me...

When I first implemented (??{}), I did not cover one case in
"dynamically create new chunk of compile tree" logic.  This lead to
bugs when (??{}) accesses lexicals in recursive subroutines.  (Not
hard to fix, but, apparently, nobody did it...)

Now you say that there is also a problem with accessing lexicals
defined inside a loop?  Strange...  Probably, the logic of the first
loop may be as in:

  A lexical @array is created;

  REx is compiled; the compile tree contains a reference to the @array;

  On exit from the loop the garbage collector of lexicals checks the
  refcount of @array; it is now 1 more than expected, so it thinks an
  EXTERNAL reference to the array exists, and "renews" @array;

On following iterations "there is no visible need" to renew @array
and recompile the REx, so none of these steps happens.  However, on
these iterations @array visible from Perl code and @array visible from
inside (??{}) are different containers.

Hope this helps,
Ilya


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

Date: Tue, 15 Feb 2011 12:15:32 -0800 (PST)
From: "C.DeRykus" <derykus@gmail.com>
Subject: Re: How to use (??{code}) correctly in foreach loop?
Message-Id: <ed8c293b-3569-4033-b428-a4cf1bd1c476@i39g2000prd.googlegroups.com>

On Feb 13, 6:01=A0pm, Peng Yu <pengyu...@gmail.com> wrote:
> Hi,
>
> I have the following code and output. I'm not sure why the code
> doesn't search for 'abc' in the second string 'efgabcabcd'. Could you
> anybody let me know what the problem is and how to fix it?
>
> $ cat main.pl
> #!/usr/bin/env perl
>
> use strict;
> use warnings;
>
> my @strings=3D('abcdefgabc', 'efgabcabcd');
> my $pattern=3D'abc';
>
> foreach my $s (@strings) {
> =A0 my @offsets=3D();
> =A0 {
> =A0 =A0 use re 'eval';
> =A0 =A0 $s =3D~ /(?=3D\Q$pattern\E)(??{push @offsets, $-[0]})/g;
> =A0 }
> =A0 print join('::', @offsets), "\n"}
>
> print "end\n";
>
> $ ./main.pl
> 0::7
>
> end

Is there some reason you need to use (?{{...})
which is tagged 'experimental' ...

A simple alternative, eg:

   my $regex =3D qr/abc/;
   foreach my $s (@strings) {
       push @offsets,$-[0] while $s =3D~ /$regex/g;
   }

--
Charles DeRykus




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

Date: Tue, 15 Feb 2011 20:43:13 -0800 (PST)
From: jwcarlton <jwcarlton@gmail.com>
Subject: Regex question; match <br> after opening tag
Message-Id: <4174b717-633a-43e8-a0c2-de3507a05a57@m7g2000vbq.googlegroups.com>

I'm working on an area where the visitor submits content via
contenteditable, so the submission comes through in Word-style HTML
(meaning, it's somewhat of a mess, and completely dependent on the
users browser).

I'm trying to remove opening and closing <br> tags. The problem I'm
having is when those tags come after a <font, <div, or <span, or
before a closing </font>, </div>, or </span>; eg:

<div class=whatever><span class=whatever><font
class=whatever><br><br><br>Hello, World!<br><br></font></span></div>

It's worth noting that <div>...</div> may or may not be there,
<span>...</span> may or may not be there, <font>...</font> may or may
not be there, they could be transposed (ie, <font> before <span>), and
the <br> tags can be from 0 to 3.

Here's where I am so far:

$text =~ s/^(<div(.*?)>)(<br>)+/$1/gi;
$text =~ s/^(<span(.*?)>)(<br>)+/$1/gi;
$text =~ s/^(<font(.*?)>)(<br>)+/$1/gi;

$text =~ s/(<br>)+(<\/div>)$/$2/gi;
$text =~ s/(<br>)+(<\/span>)$/$2/gi;
$text =~ s/(<br>)+(<\/font>)$/$2/gi;


I have 3 questions on this:

1. First off, does the code above look technically correct to you?
Meaning, would it work if we assume that the tags are always div,
followed by span, followed by font?

2. Is there a way to get these on 1 line?

3. How can I code it to work regardless of which tag comes first?

TIA,

Jason


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

Date: Tue, 15 Feb 2011 20:52:02 -0800
From: Jürgen Exner <jurgenex@hotmail.com>
Subject: Re: Regex question; match <br> after opening tag
Message-Id: <7ilml6ptnh456veujd5td8jfobhpaeb6ds@4ax.com>

jwcarlton <jwcarlton@gmail.com> wrote:
>I'm working on an area where the visitor submits content via
>contenteditable, so the submission comes through in Word-style HTML
>(meaning, it's somewhat of a mess, and completely dependent on the
>users browser).

Then why are you trying to use REs to parse this mess?

[typical ill-fated attempt of using the wrong tool for the job deleted]

>I have 3 questions on this:
>
>1. First off, does the code above look technically correct to you?
>Meaning, would it work if we assume that the tags are always div,
>followed by span, followed by font?

Who cares? Nobody in his right mind would use _REGULAR_ expressions to
parse a context-free language.

>2. Is there a way to get these on 1 line?

Sure. Just remove the linebreaks.

>3. How can I code it to work regardless of which tag comes first?

By writing a proper HTML parser. Or much easier by using one of the
readily available HTML parsers from CPAN.

jue


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

Date: Tue, 15 Feb 2011 21:06:04 -0800 (PST)
From: jwcarlton <jwcarlton@gmail.com>
Subject: Re: Regex question; match <br> after opening tag
Message-Id: <5c5cf4d7-825e-45b0-bd2b-2f3f6a034e88@k38g2000vbn.googlegroups.com>

> >I'm working on an area where the visitor submits content via
> >contenteditable, so the submission comes through in Word-style HTML
> >(meaning, it's somewhat of a mess, and completely dependent on the
> >users browser).
>
> Then why are you trying to use REs to parse this mess?
>
> [typical ill-fated attempt of using the wrong tool for the job deleted]

I'm guessing that you've never worked with a contenteditable form?
It's not as easy as all that.


> >I have 3 questions on this:
>
> >1. First off, does the code above look technically correct to you?
> >Meaning, would it work if we assume that the tags are always div,
> >followed by span, followed by font?
>
> Who cares? Nobody in his right mind would use _REGULAR_ expressions to
> parse a context-free language.

I care, or I wouldn't have asked. I assume that you care, too, or you
wouldn't have wasted your time on replying :-)


> >2. Is there a way to get these on 1 line?
>
> Sure. Just remove the linebreaks.

Sigh.


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

Date: Tue, 15 Feb 2011 23:11:21 -0600
From: Tad McClellan <tadmc@seesig.invalid>
Subject: Re: Regex question; match <br> after opening tag
Message-Id: <slrnilmmpo.rpp.tadmc@tadbox.sbcglobal.net>

jwcarlton <jwcarlton@gmail.com> wrote:

> I'm trying to remove opening and closing <br> tags. 


There is no such thing as a "closing" <br> tag...

    http://www.w3.org/TR/REC-html32#br

    ... This is an empty element so the end tag is forbidden


><div class=whatever><span class=whatever><font
> class=whatever><br><br><br>Hello, World!<br><br></font></span></div>


---------------------------
#!/usr/bin/perl
use warnings;
use strict;

my $text = '<div class=whatever><span class=whatever><font
class=whatever><br><br><br>Hello, World!<br><br></font></span></div>';

$text =~ s/<br>//g;

print "$text\n";
---------------------------


-- 
Tad McClellan
email: perl -le "print scalar reverse qq/moc.liamg\100cm.j.dat/"
The above message is a Usenet post.
I don't recall having given anyone permission to use it on a Web site.


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

Date: Tue, 15 Feb 2011 21:18:22 -0800 (PST)
From: jwcarlton <jwcarlton@gmail.com>
Subject: Re: Regex question; match <br> after opening tag
Message-Id: <ed67f039-d591-42ca-86b4-41f2d8c031e5@k18g2000vbq.googlegroups.com>

On Feb 16, 12:11=A0am, Tad McClellan <ta...@seesig.invalid> wrote:
> jwcarlton <jwcarl...@gmail.com> wrote:
> > I'm trying to remove opening and closing <br> tags.
>
> There is no such thing as a "closing" <br> tag...
>
> =A0 =A0http://www.w3.org/TR/REC-html32#br
>
> =A0 =A0 ... This is an empty element so the end tag is forbidden
>
> ><div class=3Dwhatever><span class=3Dwhatever><font
> > class=3Dwhatever><br><br><br>Hello, World!<br><br></font></span></div>
>
> ---------------------------
> #!/usr/bin/perl
> use warnings;
> use strict;
>
> my $text =3D '<div class=3Dwhatever><span class=3Dwhatever><font
> class=3Dwhatever><br><br><br>Hello, World!<br><br></font></span></div>';
>
> $text =3D~ s/<br>//g;
>
> print "$text\n";
> ---------------------------
>
> --
> Tad McClellan
> email: perl -le "print scalar reverse qq/moc.liamg\100cm.j.dat/"
> The above message is a Usenet post.
> I don't recall having given anyone permission to use it on a Web site.

Seriously, why even both replying?


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

Date: Tue, 15 Feb 2011 14:00:00 -0800 (PST)
From: "C.DeRykus" <derykus@gmail.com>
Subject: Re: Subroutine exec redefined warning with perl 5.12.2
Message-Id: <b994f415-6ed5-4a47-80d1-b971eca6ef72@o14g2000prb.googlegroups.com>

On Feb 14, 4:14=A0am, Marc Girod <marc.gi...@gmail.com> wrote:
> Hello,
>
> I installed Strawberry perl 5.12.2 on my new laptop and started to
> install my modules on it.
> And I met some surprises. I'll mention 3, but the first is the one
> that bothers me for now.
>
> 1. I got a new warning, and I'd like to understand whether it displays
> a yet unknown problem (with perl up to 5.10) or should just be
> silenced (with the next question of how?)
>
> The warning is:
>
> Subroutine exec redefined at C:/strawberry/perl/site/lib/Argv.pm line
> 852.
>
> I get it in running a command line involving ClearCase::Wrapper::MGi.
> This is hard to reproduce without ClearCase, even if the modules are
> all on CPAN.
> I tried to extract the significant code, but could not reproduce the
> symptom.
> So, here is my failed attempt at rproducing.
> Could you please help me guessing what I could add to reproduce the
> symptom, i.e. explain me what precisely it warns against?
> There is indeed a redefinition of exec on line 852 of Argv.pm, but I
> cannot see how it differes from the one below.
>
> #!/usr/bin/perl
>
> use warnings;
> use strict;
>
> package Foo;
>
> sub exec {
> =A0 print "overloaded in Foo\n";}
>
> sub new {
> =A0 return bless {}, __PACKAGE__;
>
> }
>
> package Bar;
> our @ISA =3D qw(Foo);
>
> sub exec {
> =A0 my $self =3D shift;
> =A0 print "overloaded in Bar\n";
> =A0 return $self->SUPER::exec;}
>
> sub new {
> =A0 return bless {}, __PACKAGE__;
>
> }
>
> package main;
> my $bar =3D new Bar;
> $bar->exec;
> exit 0;
>
> This works the same on 5.12 as on 5.10:
>
> $ ~/tmp/execdemo
> overloaded in Bar
> overloaded in Foo
>

But AFAIK a "subroutine redefined..." occurs
only if a sub is redefined within a class -
not because there are sub's of the same name
in its inheritance tree.

The only workaround is mentioned here:

perl -Mdiagnostics=3D-verbose -wlE
   "BEGIN { $diagnostics::DEBUG =3D 1 };
    sub x{say 'first x'};
    sub x{say 'second x'};"

DESCRIPTION OF DIAGNOSTICS
    ...

    Trappable errors may be trapped using the
    eval operator.  See perlfunc/eval.  In
    almost all cases, warnings may be selectively
    disabled or promoted to fatal errors using the
    warnings pragma.
    See warnings.

    Subroutine x redefined at -e line 1 (#1)
    (W redefine) You redefined a subroutine.
     To suppress this warning,

        {
        no warnings 'redefine';
        eval "sub name { ... }";
        }


 ...

--
Charles DeRykus


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

Date: Wed, 16 Feb 2011 08:16:49 +0800
From: jidanni@jidanni.org
Subject: warn on print if 1,3
Message-Id: <ijf53a$2fm$1@news.datemas.de>

Can't perl warn me more?
$ seq 4|perl -nwle 'print if 1,3'
1
2
3
4
$ seq 4|perl -nwle 'print if 2,3'
Useless use of a constant in void context at -e line 1.
1
2
3
4

Not only should the warning be seen in both places, but it should also
say "didn't you mean to use the .. operator?". Please tell them because
I cannot submit bug reports.


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

Date: Tue, 15 Feb 2011 17:50:25 -0800 (PST)
From: "C.DeRykus" <derykus@gmail.com>
Subject: Re: warn on print if 1,3
Message-Id: <17f481a5-324f-42a7-9d4a-8d4cb9989c86@8g2000prb.googlegroups.com>

On Feb 15, 4:16=A0pm, jida...@jidanni.org wrote:
> Can't perl warn me more?
> $ seq 4|perl -nwle 'print if 1,3'
> 1
> 2
> 3
> 4
> $ seq 4|perl -nwle 'print if 2,3'
> Useless use of a constant in void context at -e line 1.
> 1
> 2
> 3
> 4
>
> Not only should the warning be seen in both places, ...

No, adding verbose diagnostics will clarify
what occurs:

    seq 4 | perl -Mdiagnostics=3D-verbose -wlne ...

Near the end of the diagnostics explanation,
you'll see:

  "This warning will not be issued for numerical
  constants equal to 0 or 1 since they are often
  used in statements like

     1 while sub_with_side_effects();"

So, that's why you see a warning for 2,3 but
not 1,3.

> ...but it should also say "didn't you mean
> to use the .. operator?".

Seems like a good idea.

--
Charles DeRykus




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

Date: Tue, 15 Feb 2011 21:17:26 -0500
From: "Uri Guttman" <uri@StemSystems.com>
Subject: Re: warn on print if 1,3
Message-Id: <874o84d8p5.fsf@quad.sysarch.com>

>>>>> "CD" == C DeRykus <derykus@gmail.com> writes:

  CD> Near the end of the diagnostics explanation,
  CD> you'll see:

  CD>   "This warning will not be issued for numerical
  CD>   constants equal to 0 or 1 since they are often
  CD>   used in statements like

  CD>      1 while sub_with_side_effects();"

  CD> So, that's why you see a warning for 2,3 but
  CD> not 1,3.

that's been the case for a long while. 

  >> ...but it should also say "didn't you mean
  >> to use the .. operator?".

  CD> Seems like a good idea.

but how could perl figure out you meant .. instead of something else?

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, 15 Feb 2011 22:38:02 -0800 (PST)
From: "C.DeRykus" <derykus@gmail.com>
Subject: Re: warn on print if 1,3
Message-Id: <82dcaa8d-8837-4e7f-bd3a-3cc9646d3408@y35g2000prc.googlegroups.com>

On Feb 15, 6:17=A0pm, "Uri Guttman" <u...@StemSystems.com> wrote:
> >>>>> "CD" =3D=3D C DeRykus <dery...@gmail.com> writes:
>
> =A0 CD> Near the end of the diagnostics explanation,
> =A0 CD> you'll see:
>
> =A0 CD> =A0 "This warning will not be issued for numerical
> =A0 CD> =A0 constants equal to 0 or 1 since they are often
> =A0 CD> =A0 used in statements like
>
> =A0 CD> =A0 =A0 =A01 while sub_with_side_effects();"
>
> =A0 CD> So, that's why you see a warning for 2,3 but
> =A0 CD> not 1,3.
>
> that's been the case for a long while.

But the OP was apparently unaware of that
nuance and suggested warnings for both:

    "Not only should the warning be seen in
     both places, ..."

>
> =A0 >> ...but it should also say "didn't you mean
> =A0 >> to use the .. operator?".
>
> =A0 CD> Seems like a good idea.
>
> but how could perl figure out you meant .. instead of something else?
>

Yes.  I was thinking there's enough of a
chance the range op was intended for Perl
to suggest "Did you mean...".


There are cases when Perl makes an educated
guess about intent, eg,  "Did you mean $ or
@ instead of %?"..."  I agree though it'd be
hard to make a strong argument.

--
Charles DeRykus


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

Date: Wed, 16 Feb 2011 01:49:24 -0500
From: "Uri Guttman" <uri@StemSystems.com>
Subject: Re: warn on print if 1,3
Message-Id: <878vxgbhjf.fsf@quad.sysarch.com>

>>>>> "CD" == C DeRykus <derykus@gmail.com> writes:

  CD> There are cases when Perl makes an educated
  CD> guess about intent, eg,  "Did you mean $ or
  CD> @ instead of %?"..."  I agree though it'd be
  CD> hard to make a strong argument.

there are a few places where perl can make an educated guess. run on
strings is one of them. sometimes a missing ; can be obvious. but which
op was meant i think is way too hard to guess. 

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: 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 3287
***************************************


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