11月 29

在Perl中使用Term::ANSIColor模块控制颜色的三种方法

  • 方法一

Term::ANSIColor的函数color有以下参数:
clear, reset, dark, bold, underline, underscore, blink, reverse, concealed, black, red, green, yellow, blue, magenta, cyan, white, on_black, on_red, on_green, on_yellow, on_blue, on_magenta, on_cyan, and on_white

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/usr/bin/perl
 
use Term::ANSIColor;
 
print color "red";
print "REDn";
print color "green";
print "GREENn";
print color "bold blue";
print "BOLD BLUEn";
print color "on_yellow";
print "ON YELLOWn";
print color "on_cyan";
print "ON CYANn";
print color "reset";

Continue reading

11月 29

在Perl程序中显示进度条之使用Term::ProgressBar模块

  • A really simple use

  • 1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    
    #!/usr/bin/perl -w
     
    use Term::ProgressBar 2.00;
    use constant MAX =100_0000;
     
    my $progress = Term::ProgressBar-new(MAX);
     
    for ( 0 .. MAX ) {
       my $is_power = 0;
       for ( my $i = 0 ; 2**$i= $_ ; $i++ ) {
           $is_power = 1
             if 2**$i == $_;
       }
     
       if ($is_power) {
           $progress-》update($_);
       }
    }
  • A smoother bar update

  • 1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    
    #!/usr/bin/perl -w
     
    use Term::ProgressBar 2.00;
     
    my $max = 100000;
     
    my $progress = Term::ProgressBar-new($max);
     
    for ( 0 .. $max ) {
       my $is_power = 0;
       for ( my $i = 0 ; 2**$i= $_ ; $i++ ) {
           $is_power = 1
             if 2**$i == $_;
       }
     
       $progress-》update($_);
    }

    Continue reading

6月 23

用Devel::SmallProf测量Perl函数的执行时间

资料来源

用Devel::SmallProf测量Perl函数的执行时间
perl 的调试和性能测试
Perl 问题之万能指南

Devel::SmallProf是个很好用的模块,可以方便地测量出代码每一行的执行时间,以便进一步优化。

例如以下程序,文件名为test.pl。

1
2
3
4
5
6
7
#!/usr/bin/perl
 
my $str = "0";
for ( my $i = 0 ; $i < 100 ; $i++ ) {
   $str =~ s/d+/($&+1)/e;
   print $str. "n";
}

该程序的功能是输出整数 1 到 100。当然实际写程序时可不要用这么低效率的方法。
安装 Devel::SmallProf 之后我们来测量一下它每一行代码的执行时间。

1
perl -d:SmallProf test.pl

执行之后会在当前目录下生成一个 smallprof.out 文件,其内容如下:
Continue reading

5月 16

Perl中的switch实现

switch语句是这样工作的:让多个数值和一个测试值相比较,而执行与测试值相匹配的值,如果任意一个存在的话,执行对应代码。
Perl中没有内建的switch语句,你不得不使用长梯状的if、elsif和else语句进行多重检测。但你可以自己做一个:或者使用Switch模块;或者使用代码块,因为块非常像只执行一次的循环,实际上可以使用诸如last这样的循环控制语句离开这个块。
Continue reading