Perfeitamente honesto, não sei se é exatamente isso que você quer. Toda essa coisa de compilação de tempo / tempo de execução do perl é um pouco confusa para mim.
Você pode tentar o autoexpected (incluído no pacote expect). Inicialmente, você tem que executar o seu aplicativo perl através de autoexpecto, respondendo as entradas. Mas depois disso, você só precisa executar o script de saída gerado pelo autoexpect, que preenche todas as entradas.
cat expect-test.pl
#!/bin/perl
use warnings;
use strict;
print "Enter your input: ";
my $input = <STDIN>;
chomp $input;
print "You typed: $input\n";
autoexpect -f expect-test.exp ./expect-test.pl
autoexpect started, file is expect-test.exp
Enter your input: bob
You typed: bob
autoexpect done, file is expect-test.exp
./expect-test.exp
spawn ./expect-test.pl
Enter your input: bob
You typed: bob
Ou, mais simplesmente, você também pode tentar redirecionar seu arquivo de entrada para o seu script perl:
cat input.text
bart
./expect-test.pl < input.text
Enter your input: You typed: bart