PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Subroutine in Subroutine?


Darthshoot
23.11.2007, 11:58
Hallo!

Ich habe ein Problem... und zwar muss ich in einer Subroutine eine andere Subroutine aufrufen. Aber wie geht das? Sieht ungefähr so aus:

sub eins
{
print "hallo!";
sub zwei();
}
sub zwei
{
print "du!";
}

Kann mir da einer weiterhelfen? Danke schonmal.

MfG Darthshoot


mnemonic
23.11.2007, 12:07
Versuchs mal so:

// Prototype
sub zwei();

sub eins
{
print "hallo!";
zwei();
}

sub zwei
{
print "du!";
};)

kill4h`
23.11.2007, 12:08
sub eins
{
print "hallo!";
zwei();
}

sub zwei
{
print "du!";
}

Darthshoot
23.11.2007, 19:15
Super, das klappt schonmal! Danke!

Jetzt habe ich noch ein Problem: sowohl eins(); und zwei(); müssen auf die selbe Variable zugreifen und sie ändern / lesen können. Das Problem ist, dass es diese Variable nur in diesen Subroutinen gibt. Wie kann ich es irgendwie hinkriegen, dass die beiden irgendwie.. global diese Variable ändern? Return klappt irgendwie nicht..

Das wäre toll wenn ihr mir da eine Möglichkeit oder einen Tipp geben könntet.

Alamar
23.11.2007, 19:45
Die Variable im globalen Kontext definieren.


$foo = 1;

bla();

sub bla()
{
$foo=2;
blubb();
}

sub blubb()
{
$foo=3;
}

butterkeks
23.11.2007, 23:06
etwas Haarspalterei:
wirklich globale Variablen sollte man natürlich vermeiden... dazu muss man nciht direkt mit packages anrücken, sondern es reicht schon folgendes:

{
my $foo = 1;

sub bla {
$foo=2;
blubb();
}

sub blubb {
$foo=3;
}
}

bla(); # &bla vor dem Block aufzurufen ist keine so gute Idee

von außen kommt man an &bla und &blubb, aber nicht an $foo.

Dartshoot: als Anfänger kannst du das (erst mal) getrost vergessen

Darthshoot
24.11.2007, 14:41
Jo vielen Dank für die Antworten! Ihr habt mir echt geholfen :D danke!!