تيار صحيح للتفاعل في perl

يجب أن يطلب برنامج نصي لـ perl من المستخدم كلمة مرور لتنزيل بعض الملفات:

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.

ما هي الطريقة الصحيحة للقيام بذلك؟

0
أسهل حل ربما هو إضافة -O text.txt إلى أمر wget الخاص بك.
وأضاف المؤلف flesk, مصدر

2 إجابة

اطبع الموجه إلى STDERR :

print STDERR "Your password please: ";
3
وأضاف

يتم إبطال كسب الأمان من قراءة كلمة المرور مباشرة من لوحة المفاتيح عن طريق الانتقال إلى wget ، في البيئة الخاصة بكلمة المرور مرئية بوضوح لكل مستخدم على النظام. إذا كان الأمان غير مهم ، فيمكنك إعادة كتابة البرنامج على استخدام معلمات سطر الأوامر للمستخدم/كلمة المرور.

0
وأضاف