Czy istnieje sposób przekazywania dodatkowych zmiennych do podprogramu procedury obsługi? Generalnie nie lubię używać zmiennych globalnych poza zakresem podprogramu. Mam takie rzeczy jak połączenie z bazą danych i instancje klasy, do których chciałbym, aby obsługa była dostępna bez użycia globali. Korzystanie z debugowania do konsoli wygląda tak, jakby @_ było puste dla każdego wywołania obsługi.perl dancer - jak przekazać dodatkowe argumenty do podprogramów hander?
#!/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');
});
Nie jestem pewien, czy to zadziała w mojej aplikacji. Wygląda na to, że przed uruchomieniem każdego meczu przed główną procedurą obsługi. Niektóre zmienne, których chcę użyć, to jednorazowa konfiguracja. Obejmują one instancje klasy, których nie chcę reinicjalizować na każde wywołanie metody http dla tancerza. Szkoda, że nie było czegoś takiego, ale tylko raz zostałem powołany. –
Próbowałem również używać "vars" poza hakiem. To nie narzeka. Ale wartości nie ma, gdy znajduje się wewnątrz procedury obsługi metod. –
"Tylko raz wywoływane" i "instancje klasy" brzmią tak, jakbyś chciał używać zmiennych pakietowych. Coś w rodzaju 'nasze $ dbh = DBI-> connect();', zadeklarowane poza wszelkimi procedurami obsługi. – RickF