testing - How do I redirect stdout and stderr output from a Perl script to a file on Windows? -


मैंने इसे करने की कोशिश की:

  test1.pl> gt; output.log 2 & gt; & amp; 1  

लेकिन इसका नतीजा है:

  नहीं कर सकते STDOUT: C: /Perl/lib/Test/Builder.pm लाइन पर अनुमति अस्वीकृत 1376. संकलन C: /Perl/lib/Test/Builder/Module.pm पंक्ति 3 में आवश्यक होने में विफल रहा है। BEGIN विफल - सी पर निरस्त संकलन: /Perl/lib/Test/builder/Module.pm पंक्ति 3. संकलन विफल सी में आवश्यकता होती है: /Perl/lib/Test/More.pm पंक्ति 22. BEGIN विफल - सी में निरस्त संकलन: /Perl/lib/Test/More.pm पंक्ति 22. संकलन C: / Perl / साइट / lib / test / WWW / सेलेनियम पीएम लाइन 72. BEGIN विफल - सी पर निरस्त संकलन: /Perl/site/lib/Test/WWW/Selenium.pm लाइन 72. संकलन में C: \ Software \ सेलेनियम-रिमोट-कंट्रोल-1.0-बीटा -2 \ टेस्ट्स \ test1.pl लाइन 5. BEGIN विफल - सी पर निरस्त संकलन: \ Software \ selenium-remote-control-1.0-beta-2 \ test \ test1.pl लाइन 5.  

स्क्रिप्ट फ़ाइल तब तक चलता है जब तक मैं रीडायरेक्ट करने की कोशिश नहीं करता कमांड लाइन से आउटपुट किसी भी तरह से।

यहाँ मेरी स्क्रिप्ट है, बस उस स्थिति में मदद करता है (यह एक परीक्षण स्क्रिप्ट है):

  #! C: /perl/bin/perl.exe -w सख्त का उपयोग करें; चेतावनियों का उपयोग करें; समय का प्रयोग करें :: हायरेज़ क्यूडब्लू (नींद); टेस्ट का प्रयोग करें: WWW :: सेलेनियम; टेस्ट :: अधिक "no_plan" का उपयोग करें; टेस्ट :: अपवाद का प्रयोग करें; मेरा $ sel = test :: WWW :: सेलेनियम- & gt; नया (होस्ट = & gt; "स्थानीयहोस्ट", पोर्ट = & gt; 4444, ब्राउज़र = & gt; "* क्रोम", browser_url = & gt; "http: // localhost / "); प्रिंट "प्रारंभ समय:" स्थानीय समय() । "\ N"; के लिए (मेरी $ गिनती = 3000; $ काउंट & gt; 0; $ count--) {प्रिंट $ गिनती "शेष परीक्षण। \ N"; $ Sel- & gt; open_ok ( "/ घर"); $ Sel- & gt; click_ok ( "लिंक = समाचार"); $ Sel- & gt; wait_for_page_to_load_ok ( "30000"); $ Sel- & gt; click_ok ( "वीडियो"); $ Sel- & gt; wait_for_page_to_load_ok ( "30000"); $ Sel- & gt; click_ok ( "लिंक = खेल"); $ Sel- & gt; wait_for_page_to_load_ok ( "30000"); $ Sel- & gt; click_ok ( "लिंक = फिल्म"); $ Sel- & gt; wait_for_page_to_load_ok ( "30000"); $ Sel- & gt; click_ok ( "moremovies"); $ Sel- & gt; wait_for_page_to_load_ok ( "30000"); } प्रिंट "एंड टाइम:" स्थानीय समय() । "\ N";    

perl में पुनर्निर्देशन के साथ सामान्य समस्या है < कोड> विंडोज

उस पंक्ति में जो टेस्ट :: अधिक पैकेज में विफल रहता है:

  खुले टेस्टआउट, "& gt; & Amp; STDOUT "या $!;  

यह तब विफल हो जाता है जब आप कमांड को test.pl & gt; Outlog.log , जैसा कि आप STDOUT को cmd.exe द्वारा लॉक कर रहे हैं, perl.exe द्वारा नहीं रीडायरेक्ट कर रहे हैं । आप इसे dup () से perl.exe

नहीं कर सकते हैं:

  perl test1.pl & Gt; आउटपुट.लॉग 2 & gt; और amp; 1  

इसके बजाय।


Comments