【问题标题】:Why is this hash value undefined?为什么这个哈希值未定义?
【发布时间】:2015-12-04 08:52:55
【问题描述】:

所以我觉得这是我的一些愚蠢的错误,但我无法弄清楚发生了什么。

首先要了解一些情况:我正在使用 webRTC,使用 perl 和 js 构建一个小型视频聊天应用程序。我害怕被困在 webRTC 部分,但事实证明我被 perl 困住了。

在我的文件顶部我实例化一个像这样的哈希

helper clients => sub { state $clients = {} } 

每当有人使用/ 时,我都会检查我是否有当前客户的 UID。如果不是,我生成并存储它。然后我检查客户端是否已经在客户端哈希中。

if (!$self->session('uid')) {
   $self->session('uid' => sha256_hex($self->tx . irand()));
} 
if (!exists $self->clients->{$self->session('uid')}) {
    $self->clients->{$self->session('uid')} = $self->tx;
}

问题出现在我的信令服务器中。当我使用来自的值时 解码的 json 我得到一个未定义的错误。请注意,循环是无用的,我这样做是为了调试。

这里是相关代码:

$self->on(
    message => sub {
        my ( $ws, $message ) = @_;

        my $json = decode_json($message);
        for (keys %{$self->clients}) {
            app->log->info('$_ is a => ' . $_);
            # $_  => 0d96bc9bb05feb9a7c2889209ee777affcaa11252be54ca7ddc349889978850f
            app->log->info('json uid => ' . $json->{'uid'}); 
            # json uid => 0d96bc9bb05feb9a7c2889209ee777affcaa11252be54ca7ddc349889978850f
            app->log->info('remote address with $_   => ' . $self->clients->{$_}->remote_address);
            # remote address with $_   => 127.0.0.1 
            app->log->info('remote address with string => ' . $self->clients->{'0d96bc9bb05feb9a7c2889209ee777affcaa11252be54ca7ddc349889978850f'}->remote_address);     
            # remote address with string => 127.0.0.1
            app->log->info('remote address with json_ => ' . $self->clients->{$json->{'uid'}}->remote_address);
            #  Can't call method "remote_address" on an undefined value at blabla   
        }
        ....
    }
);

我不明白的是$_$json->{'uid'} 持有相同的值,那么为什么第一个工作而不是第二个工作?

【问题讨论】:

  • 它们显然不具有相同的值。尾随空格?
  • 天哪,我现在觉得自己好蠢……我会把这个留在这里,这样我才能永远记住这个错误。
  • 在我的调试打印中,我总是用括号括住打印的值,这样我就可以捕捉到这种东西。

标签: perl mojolicious


【解决方案1】:

它们显然不具有相同的值。尾随空格?

use Data::Dumper qw( Dumper );

{
    local $Data::Dumper::Useqq = 1;
    print(Dumper($json->{uid}));
}

或者在你的情况下,app->log->info 而不是 print

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-17
    • 2011-06-04
    • 1970-01-01
    • 1970-01-01
    • 2015-01-02
    • 1970-01-01
    • 2013-03-24
    • 2014-05-18
    相关资源
    最近更新 更多