Hi Alex,
Dein Beispiel müßte also durch eine weitere Dereferenzierung zum Laufen zu bringen sein:
print ${${$c{'b'}}};
»»
Treffer versenkt ;-) Da hab
ich ein Eigentor fabriziert. An die Mehrfachreferenzierung hätte ich auch selbst denken können <g> schließlich hab
ich eigentlich lange genug mit perlref zugebracht (scheinbar nicht lange genug) </g>
gern geschehen ;-)
Allerdings müsste man entweder use strict; weglassen oder den Block mit der symbolischen Referenz in no strict; einschließen.
Zumindest bei mir gibt`s immer folgende Fehlermeldung bei Gebrauch von use strict;
Can't use string ("secret") as a SCALAR ref while "strict refs" in use at .... [str2ref.pl line 19.]
(Obwohl strict 'refs' gar nicht verwendet wurde !? Ich dacht eigentlich man könnte das unabhängig verwenden )Vielleicht kannst Du mir dabei weiterhelfen, denn - wie im Thread weiter oben angemerkt - fand ich die Idee, so Daten zu referenzieren echt gut.
Es gibt drei Varianten von strict:
use strict 'refs';
use strict 'vars';
use strict 'subs';
Per "use strict;" werden alle drei aktiviert. strict 'refs' ist gerade dazu da, bei symbolischen Referenzen zu meckern - man weiß ja nie, was in den "Texten" drin steht, muß ja nicht immer eine passende Variable dazu existieren.
Jetzt kannst Du entweder nur vars und subs einschalten, oder (was ich bevorzugen würde) alles einschalten und per "no strict 'refs'" diesen Teil wieder abschalten. Ob Du das nun generell gleich hinter dem use strict machst, oder aber an den Stellen, wo Du bewußt symbolische Referenzen einsetzt, sei Dir überlassen.
Gruß,
Jörk