This is a fairly common encounter for newer Perl programmers. As the previous reply points out, you can get around the scoping issues by using the vars pragma (or the our declaration in place of my).

My suggestion is to avoid individual variables for the options completely. I never use the implicitly-sets-variable form of Getopts::Std or Getopts::Long. Instead, I always declare a hash table for the options (generally under a creative name like "%opts") and pass it by reference as the second parameter to the getopts call:

getopts("J:f:s:", \%opts) or die "error message...";

This has several advantages: You still have a lexical variable, you're passing in an explicit reference to it which avoids the scoping problems; You can also add more options to your command-line logic without worrying about declaring new variables, and you can remove options without leaving declared-but-unused variables laying around.

--rjray


In reply to Re: use strict with Getopt::Std by rjray
in thread use strict with Getopt::Std by cutter

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.