App-rs
view release on metacpan or search on metacpan
$d -= 1, 0;
}
}, prophet => 1};
}
for my $f (qw/tag crowded list which/) {
no strict 'refs';
*$f = sub {
my $pid;
local $SIG{PIPE} = 'IGNORE';
{ pipe my $r, my $w or die $!;
$pid = xsh({asynchronous => 1},
qw/less -R/, {to => *STDIN,
from => $r,
mode => '<'});
close $r;
print $w jw(filter({sink => $w,
f => &{$::{"_$f"}}}, {db => $db,
d => ''})) }
# we must wait here or we will lose control-terminal.
waitpid $pid, 0;
};
} else {
$pr = $r;
push @{$h->{pid}}, $pid;
@st = ();
}
} else {
push @st, $a;
}
$i++;
}
if ($f->{asynchronous}) {
$h->{stdout} = $pr if $f->{"capture-stdout"};
if ($f->{compact}) { $h }
elsif ($f->{"capture-stdout"}) { $pr }
else { wantarray ? @{$h->{pid}} : $h->{pid}[-1] }
} else {
if ($f->{"capture-stdout"}) {
local $/ if not wantarray;
$h->{stdout} = [<$pr>];
}
$h->{status} = [];
my ($err, $a) = getaddrinfo(@_);
die "getaddrinfo: $err" if $err;
socket my $fh, $a->{family}, SOCK_STREAM, 0 or die $!;
connect $fh, $a->{addr} or die $!;
$fh;
}
sub connect_tls {
my ($host, $port) = @_;
my ($p, $q);
socketpair $p, $q, AF_UNIX, SOCK_STREAM, 0;
xsh({asynchronous => 1}, qw/socat -/, "OPENSSL:$host:$port",
{to => *STDIN,
from => $q,
mode => '<'}, {to => *STDOUT,
from => $q,
mode => '>'});
$p;
}
sub http_parse_new {
{st => 'reading-header',
# remaining length.
( run in 0.252 second using v1.01-cache-2.11-cpan-0d8aa00de5b )