Sichtbarkeit von Variablen in Modulen

hallo

mal ne kleine frage.
und zwar lege ich im hauptprogramm ein array an. dieses array
wird dann in einem unterprogramm in einem modul benötigt.
allerdings ist es dort nicht mehr sichtbar, d.h. ich kann nicht
darauf zugreifen. das einzige was mir deswegen eingefallen ist,
ist das array mit in die unterprozedur zu übergeben, aber das
braucht ja wieder mehr speicher.

die frage ist nun ob einer von euch weiß, wie ich das array
deklarieren muß oder was ich damit machen muß, damit das array
aus dem hauptprogramm in dem modul sichtbar ist, ohne es zu
übergeben.

ok. danke und tschüß…
…puhli

Hat sich erledigt
ich habs selbst gefunden.

hast du es gemacht? Zeiger?

holli

war ganz einfach.
wenn es im hauptprogramm zum beispiel das array
@array‘ gibt. dann kann ich aus einem unterprogramm in einem modul
durch ‚@main::array‘ darauf zugreifen. man greift also eigentlich
nur auf das main-modul zu, genauso wie man auf diese art und weise
aus dem hauptprogramm auf unterprogramme in modulen zugreifen kann.

gruß…
…puhli

war ganz einfach.
wenn es im hauptprogramm zum beispiel das array
@array‘ gibt. dann kann ich aus einem unterprogramm in einem
modul
durch ‚@main::array‘ darauf zugreifen. man greift also
eigentlich
nur auf das main-modul zu, genauso wie man auf diese art und
weise
aus dem hauptprogramm auf unterprogramme in modulen zugreifen
kann.

ja das geht auch. folgendes ist „sauberer“:

#haupt
require "modul.pl"
@a=(1,2,3);
&modul\_foo (\@a); 
print $a[0]; #"test"

modul.pl:

sub modul\_foo {
 $a\_ref=$\_[0];
 print $a\_ref-\>[1]; # 2
 $a\_ref[0]="test";
}

Hier wird also ein Array als Zeiger übergeben (keine Kopie).
Das funktioniert auch wenn das array nicht global in „main“ ist.

cu