相关疑难解决方法(0)

如何在变量中捕获Perl的STDOUT?

我正在调用一个使用print写入STDOUT的函数.如何在变量中捕获它?

请注意,所有这些都发生在同一个过程中.

perl

13
推荐指数
2
解决办法
7992
查看次数

如何在Perl中打印变量而不是文件?

如何使用Perl打印到变量?

我一直在研究一个程序,它以高度冗长的方式记录它的迭代进度......

print $loghandle $some_message;
Run Code Online (Sandbox Code Playgroud)

但是,我还想有选择地将一些消息打印到不同的文件中.当然,我可以将代码撒上......

print $loghandle $some_message
print $otherloghandle $some_message
Run Code Online (Sandbox Code Playgroud)

或者将整个业务重写为一个功能.等等.

我想要做的是在打开$ loghandle时做一些魔术,这样当我print正在进行时,我实际上只是sprintf对一个变量进行ish操作(调用它$current_iteration),这样当我做出决定时我能做点什么......

print $real_log_file $current_iteration;
print $other_real_log_file $current_iteration if($condition);
Run Code Online (Sandbox Code Playgroud)

我很确定我在某个地方见过这样的东西,但我不知道它在哪里或在哪里看.

编辑:File :: Tee在某种程度上在*nix上解决了这个问题,但我在Windows上运行.

printing perl

8
推荐指数
2
解决办法
9877
查看次数

在Perl中,如何将"print"重定向到变量而不是在屏幕上显示

我的情况是这样的:while循环将检查STDIN,一旦我输入一个包含关键字"win"的行,level0子程序将显示"hahaha我赢了!\n".现在我想将打印的"hahaha I win \n"重定向到名为$ result的变量,而不是将其显示在屏幕上,然后chomp()它,然后在屏幕上显示修改后的信息.

我的预期显示:"哈哈哈,我赢了!结果被重定向"

sub level0 {
    print "hahaha I win!\n";
}

sub level1 {
    level0();
}

sub check {
    my ($word) = @_;
    if ($word =~ /win/) {
        level1($word);
    }
}

while (<>) {
    ($line) = $_;
    $result = check($line);
    chomp($result);
    print "$result, the result has been redirected\n";
}
Run Code Online (Sandbox Code Playgroud)

perl

1
推荐指数
1
解决办法
113
查看次数

标签 统计

perl ×3

printing ×1