Beefy Boxes and Bandwidth Generously Provided by pair Networks
Don't ask to ask, just ask
 
PerlMonks  

Re^2: Perl 5.34 is released (bad code example)

by LanX (Sage)
on May 23, 2021 at 12:14 UTC ( #11132918=note: print w/replies, xml ) Need Help??


in reply to Re: Perl 5.34 is released
in thread Perl 5.34 is released

# qr/{,n}/ is now accepted

I find this code very unfortunate, what does it mean if the empty string can be repeated n times?

This could better be either a syntax error. But I'm rather expecting Perl not reading the curlies as metas.

from the delta

An empty lower bound is now accepted for regular expression quantifiers, like {,3}.

so {,3} is the same like {0,3} or {1,3} ?

please elaborate!

edit

to demonstrate my point

DB<8> $re = qr/{0,3}/ DB<9> p "" =~ $re DB<10> p "{0,3}" =~ $re 1 DB<11> p $] 5.032001 DB<12> DB<13> use warnings; use strict; my $re = qr/{,3}/ DB<14>

the curlies are taken literally!

qr/{,3}/ was always allowed.

Cheers Rolf
(addicted to the Perl Programming Language :)
Wikisyntax for the Monastery

Replies are listed 'Best First'.
Re^3: Perl 5.34 is released (bad code example)
by haj (Priest) on May 23, 2021 at 14:26 UTC
      Discussing "very unfortunate" and "bad" code examples is hardly "hair splitting".

      We both are experienced enough to handle this, but many others won't.

      ...documentation can include sloppy wording, that's hard to avoid.

      But sloppy code is not a good idea, since there is no doubt of interpretation.

      I'll file a perlbug.

      Cheers Rolf
      (addicted to the Perl Programming Language :)
      Wikisyntax for the Monastery

Re^3: Perl 5.34 is released
by 1nickt (Abbot) on May 23, 2021 at 12:36 UTC

    "qr/{,3}/ was always allowed"

    Nope.

    $ perl -E 'say $]' 5.032001
    $ perl -Mstrict -wE 'my $str = "foobar"; say 1 if $str =~ /[o]{1,2}/' 1
    $ perl -Mstrict -wE 'my $str = "foobar"; say 1 if $str =~ /[o]{,2}/' Unescaped left brace in regex is illegal here in regex; marked by <-- +HERE in m/[o]{ <-- HERE ,2}/ at -e line 1.


    The way forward always starts with a minimal test.
      > $str =~ /[o]{,2}/'

      missing the point!

      Already proven in the post you downvoted (line 13)

      Cheers Rolf
      (addicted to the Perl Programming Language :)
      Wikisyntax for the Monastery

        "the post you downvoted"

        Nope again. (Update for the slow-to-comprehend: I did not downvote the post you linked to.)


        The way forward always starts with a minimal test.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://11132918]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others meditating upon the Monastery: (3)
As of 2021-12-02 01:20 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    R or B?



    Results (16 votes). Check out past polls.

    Notices?