Как я получаю доступ к значению вложенного хеша Perl?

Я плохо знаком с Perl, и у меня есть проблема, это очень просто, но я не могу найти ответ при консалтинге с моей книгой Perl.

При печати результата

Dumper($request);

Я получаю следующий результат:

$VAR1 = bless( {
             '_protocol' => 'HTTP/1.1',
             '_content' => '',
             '_uri' => bless( do{\(my $o = 'http://myawesomeserver.org:8081/counter/')}, 'URI::http' ),
             '_headers' => bless( {
                                    'user-agent' => 'Mozilla/5.0 (X11; U; Linux i686; en; rv:1.9.0.4) Gecko/20080528 Epiphany/2.22 Firefox/3.0',
                                    'connection' => 'keep-alive',
                                    'cache-control' => 'max-age=0',
                                    'keep-alive' => '300',
                                    'accept' => 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
                                    'accept-language' => 'en-us,en;q=0.5',
                                    'accept-encoding' => 'gzip,deflate',
                                    'host' => 'localhost:8081',
                                    'accept-charset' => 'ISO-8859-1,utf-8;q=0.7,*;q=0.7'
                                  }, 'HTTP::Headers' ),
             '_method' => 'GET',
             '_handle' => bless( \*Symbol::GEN0, 'FileHandle' )
           }, 'HTTP::Server::Simple::Dispatched::Request' );

Как я могу получить доступ к значениям '_method' ('ДОБИРАЮТСЯ') или 'хоста' ('localhost:8081').

Я знаю, что это - легкий вопрос, но Perl является несколько загадочным вначале.

10
задан Axeman 8 October 2010 в 21:23
поделиться

1 ответ

Нартринг прав в отношении метода грубой силы. Вложенные хэши решаются путем цепочки ключей, как например:

$hash{top_key}{next_key}{another_key}; # for %hash
# OR
$hash_ref->{top_key}{next_key}{another_key}; # for refs.

Однако, поскольку оба этих "хэша" являются благословенными объектами. Может помочь чтение HTTP::Server::Simple::Dispatched::Request, который может сказать вам, что это объект HTTP::Request и просмотр HTTP:: Request раздел о header и method методах, скажет вам, что следующее делает трюк:

my $method = $request->method();
my $host   = $request->header( 'host' );

Действительно, я рекомендую вам получить firefox поисковый плагин под названием Perldoc Module::Name и когда вы столкнетесь с выводом Dumper, который говорит "bless . ... 'Some::Module::Name'", вы можете просто скопировать и вставить его в поисковый плагин и прочитать документацию на CPAN.

13
ответ дан 3 December 2019 в 23:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: