Có cách nào để chuyển các biến bổ sung vào một trình xử lý phương thức con không? Tôi thường không thích sử dụng các biến toàn cầu bên ngoài phạm vi của chương trình con. Tôi có những thứ như kết nối cơ sở dữ liệu và trường hợp lớp mà tôi muốn các trình xử lý có quyền truy cập vào, mà không sử dụng globals. Sử dụng gỡ lỗi để bàn điều khiển, có vẻ như @_ trống cho mỗi cuộc gọi xử lý.perl dancer - cách chuyển đối số bổ sung cho các trình con thủ tục phương thức?
#!/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');
});
Không chắc chắn rằng nó sẽ làm việc cho ứng dụng của tôi. Nó trông giống như trước khi chạy trên mọi trận đấu trước khi trình xử lý chính thường trình. Một số biến tôi muốn sử dụng là một công cụ thiết lập thời gian. Chúng bao gồm các cá thể lớp, mà tôi không muốn khởi động lại trên mọi lời gọi phương thức http đến vũ công. Tôi ước gì có thứ gì đó như thế này, nhưng chỉ được gọi một lần thôi. –
Tôi cũng đã thử sử dụng "vars" bên ngoài móc. Nó không phàn nàn. Nhưng giá trị không có khi bên trong trình xử lý phương thức. –
'Chỉ được gọi là một lần' và 'âm thanh lớp' như bạn có thể chỉ muốn sử dụng các biến gói. Một cái gì đó giống như '$ dbh = DBI-> connect();' của chúng tôi, được khai báo bên ngoài bất kỳ trình xử lý nào. – RickF