stty -echo
altera as configurações no descritor do arquivo de entrada. Se você está canalizando algo para o comando stty, então o descritor do arquivo de entrada é o pipe, e stty em um pipe é, eh, inadequado (como a mensagem de erro diz).
Não está claro o que você está tentando alcançar. Se você quiser enviar o texto test
para o seu script perl para ser lido na linha my $input = <STDIN>;
, simplesmente se livre do material stty.
Se você também quiser ler o texto como entrada do usuário (ou seja, digitado) e, ao mesmo tempo, impedir que o texto seja ecoado (por exemplo, uma senha), teste se a entrada padrão é tty (terminal) antes de fazer o stty:
system( qw( stty -echo ) ) if -t 0;
Dito isso, não descarte por todos os tipos de coisas, não é para isso que o perl serve (caso contrário, você pode escrever a coisa toda em shell). Você pode alterar as configurações stty de dentro do perl, o google é seu amigo.