我正在编写一些代码,试图确保新的Web套接字连接具有特定的cookie
以下是我在服务器上收到的连接详情的摘录,我使用print Dumper($handshake->req->cookies);
$VAR1 = bless( {
'pairs' => [
[
'ZMSESSID',
'e63n6uk59entuvoed1o76u1hm6'
]
]
}, 'Protocol::WebSocket::Cookie' );
我现在需要在“pairs”数组中搜索,看看是否存在名为“ZMSESSID”的cookie。它可能存在也可能不存在,并且可能存在其他cookie。
这样做的正确方法是什么?
我试过了:
if ($handshake->req->cookies->pairs)
{
my @foo = $handshake->req->cookies->pairs;
my $match = grep { $_->[0] eq 'ZMSESSID'} @foo ;
print "$match\n";
}
但总是打印0,而不是1
答案 0 :(得分:2)
这是一个有福的hashref,包含一个带有2个元素的数组的单个元素的aray。
所以搜索你可以做..
foreach my $c ( @{ $_->{pairs}[0]} )
{
print "Match\n" if $c eq 'ZMSESSID';
}
虽然你有一个WebSocket :: Cookie :: Request的实例,你可以使用与它相关的方法和属性,如http://search.cpan.org/~vti/Protocol-WebSocket-0.19/lib/Protocol/WebSocket/Cookie/Request.pm
所述还可以从命令shell中尝试perldoc Protocol::WebSocket::Cookie::Request
。
您可以访问对象实例的方法(祝福hashref)并访问文档中描述的属性。 $ handshake-> req-> cookies->名称