Corrigir fluxo para interativo em perl

Meu script perl precisa pedir ao usuário uma senha para baixar alguns arquivos:

print "Your password please: \n";
ReadMode('noecho');
$password = ReadLine(0);
$password =~ s/\n//;
ReadMode(0);

system("wget --user=user --password=\"$password\" http://some.server/data.xml");
do_something();

If I call the script with $> ./script.pl everything works fine. But if I want to pipe the output to a file with $> ./script.pl > text.txt, the password question is piped to the file, too, and the ReadLine does not work any longer.

Qual é a maneira certa de fazer isso?

0
adicionado editado
Visualizações: 1
A solução mais fácil é provavelmente adicionar -O text.txt ao seu comando wget .
adicionado o autor flesk, fonte

2 Respostas

Imprima o prompt para STDERR :

print STDERR "Your password please: ";
3
adicionado

O ganho de segurança de ler a senha diretamente do teclado é anulado enviando para wget , em cujo ambiente a senha é claramente visível para todos os usuários no sistema. Se a segurança não importa, você pode reescrever seu programa para tomar os parâmetros da linha de comando para o usuário/senha.

0
adicionado