当前位置:  开发笔记 > 编程语言 > 正文

如何将stdout和stderr输出从Perl脚本重定向到Windows上的文件?

如何解决《如何将stdout和stderr输出从Perl脚本重定向到Windows上的文件?》经验,为你挑选了1个好方法。

我试过这个:

test1.pl >output.log 2>&1

但这是结果:

Can't dup STDOUT:  Permission denied at C:/Perl/lib/Test/Builder.pm line 1376.
Compilation failed in require at C:/Perl/lib/Test/Builder/Module.pm line 3.
BEGIN failed--compilation aborted at C:/Perl/lib/Test/Builder/Module.pm line 3.
Compilation failed in require at C:/Perl/lib/Test/More.pm line 22.
BEGIN failed--compilation aborted at C:/Perl/lib/Test/More.pm line 22.
Compilation failed in require at C:/Perl/site/lib/Test/WWW/Selenium.pm line 72.
BEGIN failed--compilation aborted at C:/Perl/site/lib/Test/WWW/Selenium.pm line 72.
Compilation failed in require at C:\Software\selenium-remote-control-1.0-beta-2\tests\test1.pl line 5.
BEGIN failed--compilation aborted at C:\Software\selenium-remote-control-1.0-beta-2\tests\test1.pl line 5.

只要我不尝试以任何方式重定向命令行的输出,脚本就会运行文件.

这是我的脚本,以防万一.(这是Selenium测试脚本):

#!C:/perl/bin/perl.exe -w
use strict;
use warnings;
use Time::HiRes qw(sleep);
use Test::WWW::Selenium;
use Test::More "no_plan";
use Test::Exception;

my $sel = Test::WWW::Selenium->new( host => "localhost",
                                    port => 4444,
                                    browser => "*chrome",
                                    browser_url => "http://localhost/" );
print "Start Time: " . localtime() . "\n";
for (my $count = 3000; $count > 0; $count--)
{
    print $count . " tests remaining.\n";
    $sel->open_ok("/home");
    $sel->click_ok("link=News");
    $sel->wait_for_page_to_load_ok("30000");
    $sel->click_ok("video");
    $sel->wait_for_page_to_load_ok("30000");
    $sel->click_ok("link=Sports");
    $sel->wait_for_page_to_load_ok("30000");
    $sel->click_ok("link=Movies");
    $sel->wait_for_page_to_load_ok("30000");
    $sel->click_ok("moremovies");
    $sel->wait_for_page_to_load_ok("30000");
}

print "End Time: " . localtime() . "\n";

Quassnoi.. 10

有一个在重定向一般问题PerlWindows.

Test::More包中失败的行说:

open TESTOUT, ">&STDOUT" or die $!;

当您调用命令时,这会失败test.pl > outlog.log,因为您重定向STDOUT到的文件被锁定cmd.exe,而不是perl.exe.你不能dup()perl.exe

你需要运行:

perl test1.pl >output.log 2>&1

代替.



1> Quassnoi..:

有一个在重定向一般问题PerlWindows.

Test::More包中失败的行说:

open TESTOUT, ">&STDOUT" or die $!;

当您调用命令时,这会失败test.pl > outlog.log,因为您重定向STDOUT到的文件被锁定cmd.exe,而不是perl.exe.你不能dup()perl.exe

你需要运行:

perl test1.pl >output.log 2>&1

代替.

推荐阅读
TXCWB_523
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有