Thread Globale Variable in einer subroutine erschaffen (8 answers)
Opened by Gast at 2007-12-11 18:36

murphy
 2007-12-11 21:00
#103745 #103745
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
Wenn außerdem der Name des Hashes dynamisch generiert werden soll, muss man wohl die Symboltabellen direkt modifizieren:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
use strict;
use warnings;

use Data::Dumper;

sub create_hash($) {
my $id = shift;
$main::{"hash_$id"} = { id => $id, data => 'rhabarber' }
}

create_hash("foo");

our %hash_foo;
print Dumper \%hash_foo;


Allerdings ist diese ganze Vorgehensweise wahrscheinlich keine gute Idee. Zumindest sollte man nicht den globalen Namensraum verschmutzen sondern alle generierten Variablen in ein bestimmtes Paket legen. Viel besser wäre es aber zum Beispiel, aus der Subroutinen eine Referenz auf einen Hash zurückzugeben. Oder vielleicht nur einen globalen Hash zu verwenden, der Referenzen auf weitere Hashes enthält...
When C++ is your hammer, every problem looks like your thumb.

View full thread Globale Variable in einer subroutine erschaffen