Klaus Mock: Array ins Environment

Beitrag lesen

Hallo,

ich würde gerne den Environment-Hash ($ENV) ein Array eintragen. Das generelle Problem wird wohl sein, dass man kein Array in einen Hash packen kann.

Kann man. Das ganze geht mit Referenzen und anonymen Arrays.
z.B. $ENV{blah} = @array;
oder $ENV{blah} = [ '1', '2', '3' ];
Zugriff geht über $ENV{blah}->[0] oder $ENV{blah}[0] .

Bleibt eigentlich nur zu klären, ob das irgendeinen Sinn ergibt.
Die Environment-Variablen haben IMHO den Sinn, um Informationen über den aktuellen Systemzustand, eben der Umgebung, in dem ein Prozeß läuft, zu beschreiben.
Der Webserver trägt bestimmte Informationen in das Environment ein (diese Dingens mit HTTP_ bzw SERVER_ ), um den aufgerufenen Script bzw. Programmen etwas Informationen über sich und den Client, der den Request ausführte, mitzugeben.
Änderungen im Environment sollten auch nur durchgeführt werden, um eventuell zu startende Subprozessen eine bestimmte Umgebung zu vermitteln, ohne auf Programmparameter zugreifen zu müssen. Ein praktisches Beispiel ist etwa die Umgebungsvariable 'ORA_HOME', welche bei Zugriffen auf den Oracle-Client (für Datenbankabfragen) gesetzt sein muß.

Auch wenn es möglich ist, so wie Matti beschrieben hat, eine anonymes Array ins Environment zu speichern, so kann dieses Array nicht (zuverlässig?) anderen Prozessen übergeben werden.[1]

Mit anderen Worten, sowas gehört IMHO nicht ins Hash %ENV. ES ist ja nicht gerade so, daß es mit Perl wirklichen Mangel gibt, innerhalb eines Scripts Datenstrukturen selbst zu definieren, daher sind solche Verrenkungen auch nicht gerade schlau, auch wenn es machbar ist.

Grüße
  Klaus

[1] Allenfalls könnte das noch mit Perl-Prozessen funktionieren, was ich allerdings nicht glaube, aber auch nicht ausschließen kann.