这个问题类似于 Python 的这个问题: WebSocket Server 定期在 python 中发送消息
在 Perl 中创建 WebSocket 的示例使用了一个小消息发送服务:http : //search.cpan.org/~topaz/Net-WebSocket-Server-0.001003/lib/Net/WebSocket/Server.pm
代码是:
use Net::WebSocket::Server;
my $origin = 'http://example.com';
Net::WebSocket::Server->new(
listen => 8080,
on_connect => sub {
my ($serv, $conn) = @_;
$conn->on(
handshake => sub {
my ($conn, $handshake) = @_;
$conn->disconnect() unless $handshake->req->origin eq $origin;
},
utf8 => sub {
my ($conn, $msg) = @_;
$_->send_utf8($msg) for $conn->server->connections;
},
binary => sub {
my ($conn, $msg) = @_;
$_->send_binary($msg) for $conn->server->connections;
},
);
}, …Run Code Online (Sandbox Code Playgroud) 我有一个包含 URL 的表,其中一些长度超过 255 个字符。我想对 URL 列施加唯一性约束,但 MySQL 不允许我在 URL 上创建键。我正在使用 InnoDB/UTF8 表。据我了解,它每个字符使用多个字节,密钥限制为 766 个字节(在 InnoDB 中)。
根据 URL 保持行唯一的优雅方法是什么?
我正在用 PHP 编写一些服务器代码,我有一个用 Perl 编写的离线进程,它们需要通过加密字符串进行通信。在 PHP 中,我一直在使用:
$encrypted_string = openssl_encrypt($my_string, "aes-128-cbc", "my_password", true, "1234567812345678");
我基本上想使用 Perl 实现完全相同的字符串输出。对我如何做到这一点的任何帮助表示赞赏。谢谢!
我正在尝试将数组转换为json:
$json = to_json("numbers_array" => \@numbers_array);
print $json;
但我得到的输出是:
{"numbers_array" => ["1","2","3"] }
我正在使用push()添加元素来构建数组.如何转换为json并保留数字类型,以便输出为:
{"numbers_array" => [1,2,3]}
谢谢!
我正在寻找一个简单的Perl实现,它验证使用服务器端密码创建的Google身份验证器令牌.例如,
以下Google URL允许您以base32格式(在下面的情况下,秘密是e4ytonjeim4hcsrhja5fe5kqfu)对服务器密码进行编码,作为可以从Google身份验证器应用程序中读取的QR代码(请参见下图):
https://chart.googleapis. COM /图表?CHT = QR&CHS = 100×100&CHL = otpauth%3A%2F%2Ftotp%2Fmysite%3A29%3Fsecret%3De4ytonjeim4hcsrhja5fe5kqfu%26issuer%3Dmysite
将QR码扫描到验证器应用程序后,它会生成令牌,如:716340.如何验证令牌的正确性?
这个问题是这个Python问题的Perl等价物:Python中的 Google Authenticator实现
我有两个字符串(键和数据),它们是十六进制字符串格式,我想接受它们的HMAC.字符串是:
$data = "0000000002ccbe80";
$key = "48656c6c6f21deadbeef";
Run Code Online (Sandbox Code Playgroud)
我想生成相当于javascript jsSHA函数,其中字符串被视为十六进制字符串.此演示http://caligatio.github.io/jsSHA/允许您指定密钥和数据是HEX字符串.
但是,当我hmac_sha1_hex($data, $key)在Perl中使用时,字符串被视为文本.我得到了hmac_sha1_hex的输出:
775083be8f8c94baea8d12a5038d191cab3759ac
Run Code Online (Sandbox Code Playgroud)
如何生成与jsSHA演示相同的输出,其中两个输入都被视为十六进制,输出也是十六进制?我想要这个输出:
f2ea4899a8582c21610085988c54645fd7193393
Run Code Online (Sandbox Code Playgroud) 我想向下舍入到N个小数位(两个位置为分).例如
5.0166 => 5.01
0.933 => 0.93
Run Code Online (Sandbox Code Playgroud)
sprintf舍入到最接近的数字,所以不会产生我想要的.例如
sprintf("%.2f", 5.0166) => 5.02
Run Code Online (Sandbox Code Playgroud)