I installed perl 5.36.0 and I tried updating my starting "template" to use v5.36; rather than use 5.010;:
#!/usr/bin/env perl use v5.36; # was 'use 5.010;' #use warnings; # unnecessary now! use strict; no if $] >= 5.018, warnings => "experimental::smartmatch"; use Getopt::Std; my %opts; getopts( 'hvi:', \%opts ) or die "getopts failed\n"; my $verbose; my $infile; while ( my ( $k, $v ) = each %opts ) { given ($k) { # <-- line 13 when ('h') { ...; } when ('v') { ++$verbose; } when ('i') { $infile = $v; } default { die "*** BUG: no handler for -$k.\n"; } } }
It now gets the following compilation errors:
syntax error at /Users/chap/private/perl/t0 line 13, near ") {" syntax error at /Users/chap/private/perl/t0 line 15, near ") {" Global symbol "$v" requires explicit package name (did you forget to d +eclare "my $v"?) at /Users/chap/private/perl/t0 line 16. Execution of /Users/chap/private/perl/t0 aborted due to compilation er +rors.
I know that given is still experimental (and unpopular), but I thought it was still supported by 5.36. Also, suddenly missing the declaration of $v is weird. Anyone know what's going on?

Update: also, what would be the modern way to write that loop?


In reply to v5.36 syntax error around given/when by ibm1620

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.