InfiniteSilence has asked for the wisdom of the Perl Monks concerning the following question:
So I am looking around in perlvar and I learn that if you preface a scalar variable name with an underscore it will by default be in the main package...wow, I think. I want to try that:
perl -e 'package Nether; our $val = 2000; my $_nonesuch = 3000; packa +ge main; print __PACKAGE__ . qq~\t~ . $main::_nonesuch;'
Makes: main
What? ...what happened by my value? So I take away the package portion:
perl -e 'package Nether; our $val = 2000; my $_nonesuch = 3000; packa +ge main; print __PACKAGE__ . qq~\t~ . $_nonesuch;'
main 3000
As an aside I should mention why I keep posting these cryptic things about basic Perl functionality. I am researching why people run into problems with Perl and give up. The target audience (for now) includes project management and product owners who have enough familiarity with the language to recommend its use but want to simultaneously reduce the backlash that might come from doing so.
Celebrate Intellectual Diversity
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Underscore in scalar name not in main package
by choroba (Cardinal) on May 08, 2026 at 20:23 UTC | |
by LanX (Saint) on May 09, 2026 at 11:20 UTC | |
|
Re: Underscore in scalar name not in main package
by dave_the_m (Monsignor) on May 08, 2026 at 20:02 UTC | |
|
Re: Underscore in scalar name not in main package
by jwkrahn (Abbot) on May 08, 2026 at 21:02 UTC | |
|
Re: Underscore in scalar name not in main package
by LanX (Saint) on May 09, 2026 at 11:12 UTC |