Intrepid has asked for the wisdom of the Perl Monks concerning the following question:
On p390 of the Camel, 4th edition, there is a code example for how to peek into the main:: symbol table hash ("stash"). I sort of duplicated it in my code, below (with changes to names of variables to suit my tastes), but I get a compile time error. The error is, precisely:
Variable "@sym" is not imported at Scripts-unfinished/env-paths-2yaml.pm line 23. Variable "%sym" is not imported at Scripts-unfinished/env-paths-2yaml.pm line 24. Global symbol "@sym" requires explicit package name (did you forget to declare "my @sym"?) at Scripts-unfinished/env-paths-2yaml.pm line 23. Global symbol "%sym" requires explicit package name (did you forget to declare "my %sym"?) at Scripts-unfinished/env-paths-2yaml.pm line 24. Execution of Scripts-unfinished/env-paths-2yaml.pm aborted due to compilation errors.
Here's the code at the present moment (how much you want to wager that 5 minutes from now I'll see what's wrong? ;-):
#!/usr/bin/env perl # First created: Thu Jul 24 2025 12:47:02 PM -04:00 [EDT] use strict; use v5.18; use utf8; use warnings; use Data::Dumper qw/Dumper/; # use Perl::ImportReport; use Env qw/MANPATH INFOPATH PATH/; # ---------------------- ### ---------------------- # # BEGIN { # require Env; Env->import( grep( /[A-Z]*PATH/ , keys %ENV ) ); # } # ---------------------- ### ---------------------- # my ($symname); use vars ('$sym'); foreach $symname ( sort keys %main::Env:: ) { local *sym = $main::Env::{$symname}; say "\@$symname array is populated" if @sym; say "\%$symname hash is populated" if %sym; } # Try with ImportReport - doesn't work ### -------------------- ### ----------------------- # # my $object = Perl::ImportReport->new( $INC{'Env.pm'} ) # || die "Invalid value for PPI document source"; # say Dumper( $object->get_import_report('imports') ); ### -------------------- ### ----------------------- # __END__
- Soren
Jul 24, 2025 at 18:17 UTC
A just machine to make big decisions
Programmed by fellows (and gals) with compassion and vision
We'll be clean when their work is done
We'll be eternally free yes, and eternally young
Donald Fagen —> I.G.Y.
(Slightly modified for inclusiveness)
|
---|
Replies are listed 'Best First'. | |
---|---|
Re: Interrogating stashes - Camel example doesn't work?
by stevieb (Canon) on Jul 24, 2025 at 19:10 UTC | |
by jdporter (Paladin) on Jul 24, 2025 at 20:40 UTC | |
by Intrepid (Curate) on Jul 28, 2025 at 00:44 UTC | |
by hossman (Prior) on Jul 29, 2025 at 22:57 UTC | |
by hippo (Archbishop) on Jul 28, 2025 at 09:55 UTC | |
Re: Interrogating stashes - Camel example doesn't work?
by ysth (Canon) on Jul 27, 2025 at 03:14 UTC | |
by Intrepid (Curate) on Jul 28, 2025 at 00:54 UTC |