一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術(shù)及教程分享平臺!
分類導(dǎo)航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務(wù)器之家 - 腳本之家 - perl - perl的logwrapper使用實例代碼

perl的logwrapper使用實例代碼

2020-06-09 10:24腳本之家 perl

perl的logwrapper可以對任何的函數(shù)將標準輸出和錯誤輸出重定向到對應(yīng)的log文件

這里為大家舉二個小例子,供朋友們學(xué)習(xí)參考。

對任何的函數(shù)記錄函數(shù)運行的時間。

復(fù)制代碼 代碼如下:

#!/usr/bin/perl
use warnings;
use strict;
no strict "refs";
sub testLogToStd{
print "Test stdout : \n";
open LOG,"> 2.txt";
select LOG;
print "just a test\n";
#recover STDOUT
select STDOUT;
print "just a test2\n";
close LOG;
}
sub testFun{
  print "From testFun\n";
  print STDERR "From TestFun Error\n";
}
sub testFun2{
  my $arg1 = shift;
  my $arg2 = shift;
  print "From testFun2\n";
  print $arg1."\n";
  print $arg2."\n";
}
my $log_root = "log" if(! $3 ||$3 == "");
my $ret = system("mkdir $log_root") if(! -e $log_root);
my $report_log = "$log_root/report.log";
open my $REPORTLOG,">",$report_log or die "cannot not open log file report.log\n";
sub logWrapper{
  my $log_root = shift;
  my $REPORTLOG  = shift;
  my $fun = shift;
  my @parameters = @_;
  *old_stdout = *STDOUT;
  *old_stderr = *STDERR;
  open LOG, ">","$log_root/$fun.log" or die "annot open log file $fun.\n";
  *STDOUT = *LOG;
  *STDERR = *LOG;
  my $start = time;
  my $ret = &$fun(@parameters);
  my $end = time;
  *STDOUT = *old_stdout;
  *STDERR = *old_stderr;
  close LOG;
  my $duration = $end - $start;
  print $REPORTLOG "$fun\n";
  print $REPORTLOG "start:".localtime($start)."\n";
  print $REPORTLOG "end:".localtime($end)."\n";
  print $REPORTLOG "duration:".formatTimeDuration($duration)."\n";
  print $REPORTLOG "result:$ret\n";
  print $REPORTLOG "\n";
  print $REPORTLOG "\n";
}
sub formatTimeDuration($){
  my $t = shift;
  my $hrs = int($t/3600);
  my $mins = int($t%3600/60);
  my $secs = int($t%3600%60);
  return "$hrs:$mins:$secs";
}
&logWrapper($log_root,$REPORTLOG,"testFun");
&logWrapper($log_root,$REPORTLOG,"testFun2","arg1","arg2");
print "thanks\n";

 

若需要調(diào)用外部命令,則需要如下:

復(fù)制代碼 代碼如下:

#!/usr/bin/perl
use strict;
use warnings;
# run external commands
# redirect stdout and stderr
sub run_cmd{
  my $cmd = shift;
  my $pid = open(PH, "$cmd 2>&1 |");
  while (<PH>) {print $_; }
}
open(FH, ">", "perl-test.log");
*old_stdout = *STDOUT;
*old_stderr = *STDERR;
*STDOUT = *FH;
*STDERR = *FH;
my $ret = undef;
$ret = readpipe("cp a b ");
$ret = system("cp a b");
$ret = `cp a b`;
run_cmd("cp a b");
print "AA";
print STDERR "BB";
*STDOUT = *old_stdout;
*STDERR = *old_stderr;

 

延伸 · 閱讀

精彩推薦
  • perlperl pop push shift unshift實例介紹

    perl pop push shift unshift實例介紹

    perl的pop跟push操作數(shù)組的最右邊,shift跟unshift操作數(shù)組的最左邊 ...

    腳本之家4612020-06-10
  • perlPerl的經(jīng)典用法分享

    Perl的經(jīng)典用法分享

    Perl的經(jīng)典用法分享,學(xué)習(xí)perl的朋友可以參考下 ...

    腳本之家6562020-06-06
  • perlPerl使用nginx FastCGI環(huán)境做WEB開發(fā)實例

    Perl使用nginx FastCGI環(huán)境做WEB開發(fā)實例

    這篇文章主要介紹了Perl使用nginx FastCGI環(huán)境做WEB開發(fā)實例,實現(xiàn)了路由系統(tǒng)和模板系統(tǒng),需要的朋友可以參考下...

    Perl教程網(wǎng)2412020-06-18
  • perlPerl從文件中讀取字符串的兩種實現(xiàn)方法

    Perl從文件中讀取字符串的兩種實現(xiàn)方法

    有時候我們需要從文件中讀取字符串,這里簡單介紹下, 需要的朋友可以參考下 ...

    腳本之家6252020-06-08
  • perlperl常見問題集合之二

    perl常見問題集合之二

    哪些平臺上有 Perl?要到哪里去找? Perl的標準發(fā)行版(由 perl 發(fā)展小組負責維護)僅以原始碼形式發(fā)行。您可在 http: //www.perl.com/CPAN/src/latest.tar.gz處取得。這個檔...

    腳本之家2102020-05-29
  • perlperl use vars pragma使用技巧

    perl use vars pragma使用技巧

    perl 中的vars是perl中的一個pragma(預(yù)編譯指示符),專門用來預(yù)定義全局變量,這些預(yù)定義后的全局變量在qw()列表中,在整個引用perl文件中皆可使用,即便使...

    perl教程網(wǎng)6812020-06-16
  • perlPerl List::Util模塊使用實例

    Perl List::Util模塊使用實例

    這篇文章主要介紹了Perl List::Util模塊使用實例,本文給出掃描符合條件的某個列表并取出第一個符合條件的、求1到1000之間的和 、求一組數(shù)字的最大值與最小...

    腳本之家4712020-06-22
  • perlperl命令行參數(shù)內(nèi)建數(shù)組@ARGV淺析

    perl命令行參數(shù)內(nèi)建數(shù)組@ARGV淺析

    這篇文章主要介紹了perl命令行參數(shù)內(nèi)建數(shù)組@ARGV淺析,本文重點在于講解@ARGV的用法,并通過實例來說明,需要的朋友可以參考下 ...

    perl教程網(wǎng)6162020-06-18
主站蜘蛛池模板: 国内视频一区二区三区 | 韩国三级年轻小的胰子完整 | 国产欧美一区二区三区精品 | 99精品在线 | 亚洲AV午夜福利精品香蕉麻豆 | 14一15sexvideo日本 | 国内精品一区二区三区东京 | 校花被扒开尿口折磨憋尿 | 午夜dj影院在线观看完整版 | 91sao在线看片水片 | 美女草b| 91久久精品青青草原伊人 | 蘑菇香蕉茄子绿巨人丝瓜草莓 | 欧美色综合高清免费 | 色综色天天综合网 | 国产成人高清亚洲一区91 | 好大水好多好爽好硬好深视频 | 久久免费观看视频 | 火影忍者小南裸羞羞漫画 | 无码天堂亚洲国产AV久久 | 国产午夜精品一区二区 | 国产精品久久久99 | 国语自产拍在线观看7m | 贤妻良母电影日本 | 韩国三级hd中文字幕李采潭 | 久久re视频精品538在线 | 国产白白视频在线观看2 | 国产九九视频在线观看 | 精品精品久久宅男的天堂 | 13日本xxxxxxxxx18 1313午夜精品久久午夜片 | 国产精品久久久久久网站 | 人人爱操 | 天堂网在线.www天堂在线资源 | 欧美日韩一区二区三区在线播放 | 香蕉免费一区二区三区 | 双性np玩烂了np欲之国的太子 | 国产亚洲精品aaa大片 | 好奇害死猫在线观看 | 国产啪精品视频网给免丝袜 | 日本特黄一级大片 | 手机亚洲第一页 |