Thread Aufruf einer sub und Parameter (16 answers)
Opened by bianca at 2018-03-04 14:39

bianca
 2018-03-04 14:39
#188070 #188070
User since
2009-09-13
6977 Artikel
BenutzerIn

user image
Guten Tag!

Bei der Arbeit mit dem Modul CPAN:Crypt::LE übergibt man im Kommando ->accept_challenge() den Namen einer sub.
Ich möchte das gern anders schreiben. Denn wenn ich die sub mit sub process_challenge {} definiere kann ich auf Variablen außerhalb der sub nicht zugreifen. Übergeben kann ich sie aber auch nicht, weil der Aufruf CPAN:\&process_challenge lautet und in $_[0] eine Hash Referenz übergeben wird. Die würde ich dann ja mit meinen eigenen Variablen überschreiben.

Wenn ich allerdings andersherum die sub mit my $process_challenge = sub {}; definiere habe ich zwar Zugriff auf die Variablen außern aber es funktioniert der Aufruf ->accept_challenge(\&process_challenge) nicht mehr.

Nochmal Zusammenfassung:
1. Dies kompiliert nicht, weil innen Variablen fehlen:
Code (perl): (dl )
1
2
3
4
5
6
my $foo = 'bar';
sub process_challenge {
    my $challenge = shift;
    # hier fehlt $foo
}
$le->accept_challenge(\&process_challenge);


2. Hierbei meldet das Modul
Quote
All challenges failed

Code (perl): (dl )
1
2
3
4
5
6
my $foo = 'bar';
my $process_challenge = sub {
    my $challenge = shift;
    # hier ist $foo zwar da aber das Modul muckt
};
$le->accept_challenge(\&process_challenge);


Ich weiß nicht, wie man das anders schreiben kann und ich weiß auch nicht, wonach ich googeln müsste, um hierfür eine Lösung zu finden
Was ist hier die sauberste Lösung? Kommt nicht auf Speed und CPU an.

Danke!
10 print "Hallo"
20 goto 10

View full thread Aufruf einer sub und Parameter