# CODE: my $obj = ''; lives_ok { $obj = Commander->new(valid_chars => [ qw ( a b c d ) ] ) } 'Can pass it an array of valid chars'; lives_ok { issue_cmd("abcd\n") } 'Can get a command terminated with new line'; is ($obj->last_cmd, 'abcd', 'got expected input'); # this fails, returns empty string # support methods sub jam { $TIOCSTI = 0x80017472; for (split(//, $_[0])) { ioctl(STDIN, $TIOCSTI, $_) || die "bad TIOCSTI: $!"; } } sub issue_cmd { my $cmd = shift; my $pid = fork(); if (!defined $pid) { die "Cannot fork: $!"; } elsif ($pid == 0) { $obj->get_cmd; exit 0; } else { jam($cmd); waitpid $pid, 0; } }