在Perl中搜索似乎是一个数组的数组(web套接字)

时间:2015-10-04 21:32:53

标签: arrays perl

我正在编写一些代码,试图确保新的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

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->名称