Beefy Boxes and Bandwidth Generously Provided by pair Networks
No such thing as a small change
 
PerlMonks  

Re: Perl 5.34 is released

by GrandFather (Saint)
on May 23, 2021 at 10:10 UTC ( #11132911=note: print w/replies, xml ) Need Help??


in reply to Perl 5.34 is released

A first class try/catch will be nice if it becomes a permanent feature, but I love

# qr/{,n}/ is now accepted
Optimising for fewest key strokes only makes sense transmitting to Pluto or beyond

Replies are listed 'Best First'.
Re^2: Perl 5.34 is released (bad code example)
by LanX (Sage) on May 23, 2021 at 12:14 UTC

    # 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

        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

      "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

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others drinking their drinks and smoking their pipes about the Monastery: (None)
    As of 2021-10-21 03:05 GMT
    Sections?
    Information?
    Find Nodes?
    Leftovers?
      Voting Booth?
      My first memorable Perl project was:







      Results (82 votes). Check out past polls.

      Notices?