(这是为 x86_64-linux 构建的 cperl 5,版本 24,subversion 4 (v5.24.4c))Ubuntu 18.04。
下面是一个有效的程序。但是,当我在 Mojolicious::Lite(6.04 版)中运行该程序时,它会挂起。使用top,我看到“tr”是吃掉所有CPU的那个。我尝试使用 cat 而不是 tr ,但它仍然挂起。如果我 Control-C Mojo 代码,它会打印密码然后退出。就像 tr 正在接受 urandom 字节,但在我打断它之前不会继续折叠。但是,这适用于普通脚本,而不是 Mojo 脚本......
任何人对为什么有任何想法?
热情地
约翰
有效的脚本:
#! /usr/bin/perl
use strict;
use warnings;
use Data::Dumper;
my $pass_length = 3;
my $exec = qq{tr -cd "[:alnum:]" < /dev/urandom | fold -w$pass_length | head -n1};
print Dumper $exec;
my $pass = qx{$exec};
chomp $pass;
print Dumper $pass;
挂起的 Mojolicious Lite 代码:
use Mojolicious::Lite;
use strict;
use warnings;
use Data::Dumper;
post 'testit' => sub {
my $c = shift;
my $pass_length = 3;
# tr -cd '[:alnum:]' < /dev/urandom | fold -w30 | head -n1
my $exec = qq{tr -cd '[:alnum:]' < /dev/urandom | fold -w$pass_length | head -n1};
warn Dumper $exec;
my $pass = qx{$exec};
chomp $pass;
warn Dumper $pass;
return $c->render( json => { foo => 'bar'} );
};
app->secrets('foobar');
app->start;