我花了几个小时试图获得' Auth-Token'出于REST api响应标题,我只是不理解bless({key => value})的含义 这是一个数组内的hashref吗?我怎样才能遍历它。
$VAR1 = bless( {
'access-control-allow-credentials' => 'true',
'connection' => 'keep-alive',
'x-powered-by' => 'restheart.org',
'client-response-num' => 1,
'access-control-allow-origin' => '*',
'date' => 'Thu, 05 May 2016 22:54:44 GMT',
'client-peer' => '172.18.18.122:8080',
'content-length' => '469',
'access-control-expose-headers' => 'Location, ETag, Auth-Token, Auth-Token-Valid-Until, Auth-Token-Location, X-Powered-By',
'::std_case' => {
'access-control-allow-credentials' => 'Access-Control-Allow-Credentials',
'x-powered-by' => 'X-Powered-By',
'client-response-num' => 'Client-Response-Num',
'access-control-allow-origin' => 'Access-Control-Allow-Origin',
'client-peer' => 'Client-Peer',
'access-control-expose-headers' => 'Access-Control-Expose-Headers',
'client-date' => 'Client-Date',
'auth-token-valid-until' => 'Auth-Token-Valid-Until',
'auth-token-location' => 'Auth-Token-Location',
'auth-token' => 'Auth-Token'
},
'client-date' => 'Thu, 05 May 2016 22:55:00 GMT',
'content-type' => 'application/hal+json',
'auth-token-valid-until' => '2016-05-05T23:09:44.471Z',
'auth-token-location' => '/_authtokens/test',
'auth-token' => 'fbbb0215-cedd-4a10-9f89-93fdf1e84fdc'
}, 'HTTP::Headers' );
答案 0 :(得分:4)
这是一个被HTTP::Headers对象祝福的哈希。您可以使用其API访问所需内容:
my $token = $VAR1->header('auth-token');
我不建议直接通过哈希访问它(打破封装),以防HTTP::Headers
的内部发生变化。
答案 1 :(得分:0)
在perl5中常见的是对对象使用哈希。在这种情况下,您有一个' HTTP :: Headers' $ VAR1中的对象。在引擎盖下,对象是一个祝福的HashRef,所以你所看到的是普通的"胆量"一个哈希。在"胖子逗号的左边"是关键,右边是价值观。
所以,你的问题归结为 - 给定一个变量中的hashref,我如何获得key' x'?的值。现在,这就是你如何做到的 - 但不要这样做。
print $VAR1->{ auth-token };
我之所以说'#34;不这样做'#34;是你打破了封装的OO编程的基本原则。对象的详细信息不应该是您的任何业务。而是使用类提供的方法(即,由模块HTTP::Headers
提供)
阅读HTTP::Heders doco,您可以获得'身份验证令牌的标题。像这样;
print $VAR1->header( 'auth-token' )
这是你需要做的。