Thread Vordefinierte Variablen anzeigen (52 answers)
Opened by bianca at 2010-02-07 13:20

pq
 2014-10-19 20:34
#177897 #177897
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
$glob ist (im normalfall) keine referenz, sondern ein typeglob. ausser bei konstanten, wie es ausschaut.
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$main::test_variable = 23;
sub test_sub;
use constant test_constant => 23;
sub test_sub2() { 23 }

for my $var (sort keys %main::) {
    my $glob = $main::{$var};

    my $ref = ref $glob;
    my $refref = ref \$glob;
    my $deref = $ref eq 'SCALAR' ? $$glob : '-';

    say "var=$var glob=$glob ref=$ref refref=$refref deref=$deref";
}

Ausgabe (verdeutlicht):
Code: (dl )
1
2
3
4
var=test_constant glob=SCALAR(0x176bd08)    ref=SCALAR refref=REF    deref: 23
var=test_sub glob=-1 ref= refref=SCALAR deref: -
var=test_sub2 glob=*main::test_sub2 ref= refref=GLOB deref: -
var=test_variable glob=*main::test_variable ref= refref=GLOB deref: -

wie man sieht, kann man so sogar doch den inhalt der konstanten ausgeben; ist für bianca evtl. noch interessant.
warum das alles so ist und wo das im detail dokumentiert ist, weiss ich allerdings auch nicht, habe es aber auch noch nie so detailliert gebraucht.
Last edited: 2014-10-19 20:39:20 +0200 (CEST)
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem

View full thread Vordefinierte Variablen anzeigen