Dec 25

Perl: 同时在屏幕和文件打印输出的3种实现方式(转) 不指定

admin , 20:47 , 脚本JQuery » Perl , 评论(0) , 引用(0) , 阅读(107) , Via 本站原创 | |
搜索
我已经获得阿里云幸运券,准备分享给您。请点击获取   Perl: 同时在屏幕和文件打印输出的3种实现方式
第一种方式:Perl 代码实现:
#!/usr/bin/perl
 
use strict;
use warnings;
use diagnostics;
 
open(LOG, '>', 'LOG_FILE') or die "Can't redirect stdout: $!";
open(CMD, 'ls |');
open(STDERR, '>&', STDOUT) or die "Can't redirect stderr: $!";
open(STDERR, '>', 'LOG_FILE') or die "Can't redirect stderr: $!";
print "LOG_FILE\n";
while (<CMD>) {
    &lprint ($_)
}
 
sub lprint {
      my ($line) = @_;
      print LOG $line;  
      print $line;
}
 
close(CMD) or die "close CMD failed: $!";
 
exit(1);

第二种方式:利用Perl的Tee模块:
#!/usr/bin/perl
use IO::Tee; 
$tee = IO::Tee->new(">> log.txt", \*STDOUT); 
print $tee "Log on ".scalar(localtime)."\n";

或者
#!/usr/bin/perl
open (STDOUT, "| tee -ai log.txt");
print "Log on ".scalar(localtime)."\n";
close (STDOUT);

这个方式最方便 tee -ai log.txt 且默认不用额外安装其他插件
how-perl-log-on-screen-and-file
---end
Tags: