Guten Tag!
Bei der Arbeit mit dem Modul
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
\&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:
my $foo = 'bar';
sub process_challenge {
my $challenge = shift;
}
$le->accept_challenge(\&process_challenge);
2. Hierbei meldet das Modul
QuoteAll challenges failed
my $foo = 'bar';
my $process_challenge = sub {
my $challenge = shift;
};
$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