Gibt es eine Möglichkeit, zusätzliche Variablen an eine Subroutine für Methodenhandler zu übergeben? Ich mag es generell nicht, globale Variablen außerhalb des Bereichs der Subroutine zu verwenden. Ich habe Dinge wie Datenbankverbindung und Klasseninstanzen, auf die die Handler zugreifen sollen, ohne globale Variablen zu verwenden. Bei Verwendung von debug für die Konsole ist @ @ für jeden Handleraufruf leer.Perl Tänzer - wie übergeben Sie zusätzliche Argumente zu Methoden-Handler-Subroutinen?
#!/usr/bin/perl
use strict;
use Dancer;
use Data::Dumper;
set('logger' => 'console');
my $somevar = SomeClass->new();
get('/' => sub{
debug(Dumper(@_));
debug($somevar);
return('hello world');
});
Nicht sicher, dass das für meine Anwendung funktioniert. Es sieht so aus, als ob es vor jeder Übereinstimmung vor der Main-Handler-Routine läuft. Einige der Variablen, die ich verwenden möchte, sind ein einmaliges Setup. Sie enthalten Klasseninstanzen, die ich nicht bei jedem http-Methodenaufruf für Tänzer neu initialisieren möchte. Ich wünschte, es gäbe etwas anderes, aber wurde nur einmal genannt. –
Ich habe auch versucht, "Vars" außerhalb des Hakens zu verwenden. Es beschwert sich nicht. Aber der Wert ist nicht innerhalb des Methodenhandlers vorhanden. –
"Nur einmal aufgerufene" und "Klasseninstanzen" klingen so, als ob Sie nur Paketvariablen verwenden möchten. Etwas wie 'our $ dbh = DBI-> connect();', das außerhalb von Handlern deklariert wird. – RickF