Hallo,
ist es möglich, beispielsweise my $foo = "x" aus sub 1 in sub 2 zu übernehmen?
Z.B. so:
sub foo
{
my $foo = "x";
........
}
sub bar
{
my $bar = $foo
.......
}
Wie kann ich nun $bar mit dem Inhalt aus $foo füllen?
Danke schonmal.
User since
2004-03-22
5697
Artikel
ModeratorIn + EditorIn
du kannst ausserhalb der subs eine variable mit our deklarieren die dann im kanzen package oder ganzen script bekannt ist.
du kannst das our auch weglassen, aber solche globale variablen sollte man vermeiden
User since
2003-11-28
3645
Artikel
ModeratorIn
Die Deklaration muss man nicht unbedingt außerhalb machen, man kann sie auch in jedem Scope wiederholen:
use strict;
sub foo {
our $bla = 1;
}
sub bar {
our $bla;
print $bla, "\n";
}
foo();
bar();
User since
2006-02-17
628
Artikel
BenutzerIn
Die Frage die ich mir stelle ist, wozu brauchst man das? (nicht our, sondern den Zugriff auf eine lokale Funktionvariabel)
Ich hab mir ein Modul erstellt, in dem in mehreren Subs auf eine SQL Datenbank zugegriffen wird. Nur möchte ich nicht in den betreffenden Subs die Daten eingeben müssen, sondern in einer einzelnen sub ganz zu beginn des eigentlichen moduls die daten festlegen und innerhalb der anderen subs wieder darauf zugreifen.
User since
2006-02-17
628
Artikel
BenutzerIn
Ja, das ist eine normale Vorgehensweise. Entweder nutzt du dazu Attribute die du deinem Objekt gibst oder du hast Modulweite Variabeln. Kommt drauf an ob das Modul ein Objekt hat das du mit bless erzeugst oder nicht.