Thread Name der Variablen? (7 answers)
Opened by master at 2006-03-21 22:37

murphy
 2006-03-22 01:02
#63933 #63933
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
Ich möchte behaupten, dass das sauber nicht ohne Codetransformation vor der Kompilationsphase des Perlcodes machbar ist, da zum Beispiel lexikalische Variablen intern nicht zwingend einen Namen haben und auch für globale Variablen natürlich keine eindeutige Zuordnung vom Wert zur Variablen gewährleistet ist -- deine Subroutine bekommt ja als Parameter nur den Wert und nicht die Variable selbst übergeben. Außerdem wäre jede Suche der Variablen anhand ihres Wertes natürlich haarsträubend ineffizent.

Als ebenfalls haarsträubende Lösung könnte man statt des Wertes den Namen einer globalen Variablen übergeben. Also etwa so:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
#!/usr/bin/perl
use strict;
use warnings;

sub makeXML {
no strict 'refs';
my $v = shift;
"<$v>${$v}</$v>";
}

our $bla = 42;
print makeXML('bla'), "\n";

Aber ich würde hiervon aus stilistischen Gründen abraten ;-)

Schließlich kann man sich unter Umständen auch noch etwas zusammenschustern, wenn man sich einmal anschaut, wie der Perl-Debugger dieses Problem löst.
When C++ is your hammer, every problem looks like your thumb.

View full thread Name der Variablen?