Beefy Boxes and Bandwidth Generously Provided by pair Networks
go ahead... be a heretic

Re^5: Two meanings of undef (updated)

by AnomalousMonk (Bishop)
on Aug 16, 2020 at 03:28 UTC ( #11120802=note: print w/replies, xml ) Need Help??

in reply to Re^4: Two meanings of undef
in thread Two meanings of undef

There's a distinction between %main:: (the symbol table of the main package, i.e., namespace) and the two hashes %main and %main::main (which are two different ways of naming the same hash!) in the main package.

c:\@Work\Perl\monks>perl -w -le "use v5.10; say X; say $main::{X}; if(exists $main::{X} ){ say 'A: exists';} else {say 'A: does not e +xist';} if(exists $main{X} ){ say 'B: exists';} else {say 'B: does not e +xist';} if(exists $main::main{X}){ say 'C: exists';} else {say 'C: does not e +xist';} die 'not the same' if \%main != \%main::main; die 'are the same' if \%main == \%main::; if( defined(X) ){say 'defined';} else {say 'not defined';} " say() on unopened filehandle X at -e line 1. *main::X A: exists B: does not exist C: does not exist defined
(Note: warnings are enabled, strictures disabled.)

The statement say X; creates an unopened filehandle X in the main package which exists and is defined, although useless. The hash elements $main{X} and $main::main{X} (again, two different names for the same thing) do not exist and are not defined.

Update 1: A few minor wording changes.

Update 2: The difference and equivalence among the two separate hashes running around in this example code can be highlighted by inserting the
    say ' \%main:: ', \%main::, ' \%main ', \%main, ' \%main::main ', \%main::main;
statement just before the two die statements. Note that autovivification is at work to bring the latter two hashes | hash with two names into existence.

Give a man a fish:  <%-{-{-{-<

Replies are listed 'Best First'.
A reply falls below the community's threshold of quality. You may see it by logging in.

Log In?

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

How do I use this? | Other CB clients
Other Users?
Others surveying the Monastery: (2)
As of 2020-10-24 18:18 GMT
Find Nodes?
    Voting Booth?
    My favourite web site is:

    Results (246 votes). Check out past polls.