पर्ल में इंटरैक्टिव के लिए सही धारा

मेरी 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
जोड़ा संपादित
विचारों: 1
सबसे आसान समाधान शायद -O text.txt को अपने wget कमांड में जोड़ना है।
जोड़ा लेखक flesk, स्रोत

2 उत्तर

प्रॉम्प्ट को STDERR पर प्रिंट करें:

print STDERR "Your password please: ";
3
जोड़ा

कुंजीपटल से सीधे पासवर्ड पढ़ने से सुरक्षा लाभ को wget पर खोलकर हटा दिया जाता है, जिसका पर्यावरण में पासवर्ड सिस्टम पर हर उपयोगकर्ता के लिए स्पष्ट रूप से दिखाई देता है। अगर सुरक्षा कोई फर्क नहीं पड़ता है, तो आप उपयोगकर्ता/पासवर्ड के लिए कमांड लाइन पैरामीटर पर अपने प्रोग्राम को फिर से लिख सकते हैं।

0
जोड़ा