App-Greple-pw
view release on metacpan or search on metacpan
lib/App/Greple/pw.pm view on Meta::CPAN
"pw_label_color|pw-label-color=s",
"pw_blackout|pw-blackout!",
"id_keys|id-keys=s",
"pw_keys|pw-keys=s",
);
# All parameters are automatically managed by Getopt::EX::Config references
}
sub pw_status {
binmode STDOUT, ":encoding(utf8)";
for my $key (sort keys %{$config}) {
my $val = config($key);
if (defined $val) {
print "$key: $val\n";
} else {
print "$key: (default)\n";
}
}
}
lib/App/Greple/pw.pm view on Meta::CPAN
}
sub command_loop {
my $pw = shift;
open TTY, "/dev/tty" or die;
require Term::ReadLine;
my $term = Term::ReadLine->new(__PACKAGE__, *TTY, *STDOUT);
binmode TTY, ":encoding(utf8)";
binmode STDOUT, ":encoding(utf8)";
while ($_ = $term->readline("> ")) {
if (config('timeout')) {
$SIG{ALRM} = \&pw_timeout;
alarm config('timeout');
warn "Set timeout to ", config('timeout'), " seconds\n" if config('debug');
}
/\S/ or next;
$term->addhistory($_);
s/\s+\z//;
t/runner/Runner.pm view on Meta::CPAN
use IO::File;
sub run {
my $obj = shift;
use IO::File;
my $pid = (my $fh = new IO::File)->open('-|') // die "open: $@\n";
if ($pid == 0) {
if (my $stdin = $obj->{STDIN}) {
open STDIN, "<&=", $stdin->fileno or die "open: $!\n";
$stdin->fcntl(F_SETFD, 0) or die "fcntl F_SETFD: $!\n";
binmode STDIN, ':encoding(utf8)';
}
open STDERR, ">&STDOUT";
$obj->execute;
exit 1;
}
$obj->{STDIN} = undef;
binmode $fh, ':encoding(utf8)';
$obj->{stdout} = do { local $/; <$fh> };
my $child = wait;
$child != $pid and die "child = $child, pid = $pid";
$obj->{pid} = $pid;
$obj->{result} = $?;
$obj;
}
sub status {
my $obj = shift;
t/runner/Runner.pm view on Meta::CPAN
}
*result = \&stdout; # for backward compatibility
sub setstdin {
my $obj = shift;
my $data = shift;
my $stdin = $obj->{STDIN} //= do {
my $fh = new_tmpfile IO::File or die "new_tmpfile: $!\n";
$fh->fcntl(F_SETFD, 0) or die "fcntl F_SETFD: $!\n";
binmode $fh, ':encoding(utf8)';
$fh;
};
$stdin->seek(0, 0) or die "seek: $!\n";
$stdin->truncate(0) or die "truncate: $!\n";
$stdin->print($data);
$stdin->seek(0, 0) or die "seek: $!\n";
$obj;
}
##
( run in 0.348 second using v1.01-cache-2.11-cpan-0a987023a57 )