Thread Schreibweise für GLOB
(4 answers)
Opened by rosti at 2018-11-24 12:55 2018-11-25T07:11:29 rosti Ich hab's ja schon geschrieben: *m->{FOO} = 'foo'; hat mit der lexikalischen Variable $m gar nichts zu tun! Mit *m erzeugst Du einen Eintrag in der Symboltabelle von main. Guckst Du hier: Code (perl): (dl
)
1 2 3 4 5 6 use strict; use Data::Dump qw/dump/; *m->{FOO} = 'foo'; # einfach Glob dump %main::m; dump $::{m}; Ausgabe: Die Dinger lassen sich wie Klassenvariablen verwenden, weil sie in der Symboltabelle des jeweiligen package drinstehen. Der Lesbarkeit dient das allerdings nicht. Du verbuchselst das auch mit my $self (lexikalischer Skalar, nicht in der Symboltabelle) und *self (Typeglob, spricht für alle Einträge mit dem Namen "self" in der Symboltabelle). Das hatte mich auch bei Deinem ursprünglichen Artikel so stutzig gemacht: Das übliche Mantra ist my $self = shift; und somit einfach eine andere Baustelle als *self! |