6月 28

在Linux和Windows平台下查找两列数据中不重复的记录

  • 在Linux中使用Shell查找两列数据中不重复的记录[简便、高效;推荐!]

现有两个文件first.txt和second.txt,内容分别如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
cat first.txt
赵
钱
孙
周
郑
王
cat second.txt
钱
赵
孙
孙
李
吴

首先进行预处理,如下:

1
2
sort first.txt | uniq >first_sort_uniq.txt
sort second.txt | uniq >second_sort_uniq.txt

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

6月 20

[转载]如果编程语言是汽车

资料来源:
If programming languages were cars…
如果编程语言是汽车……

Ada 是一种异常神勇永远不会损坏的坦克。如果你跟别人说你驾驶 的是Ada 他们会笑疯的,但是,说真的,你愿意在战场上开跑车吗?
汇编语言 仅仅是一台引擎。你需要自己搭建汽车,并且在行驶过程中手动注入燃料,不过如果你足够小心的话,它可以跑得像脱缰野马一般快。

Basic 这种汽车用来开到附近的商店去购物还不错.Basic曾经在学习驾驶的人中很流行。但是最近被剥得只剩皮,被一个主要生产者重新设计,新版本可以胜任长途旅行,与旧版本之间只有外表上比较像,但其余部分都已经改变了

C 快得难以置信但是每五十分钟坏一次的跑车。

Cobol 是个有名气的汽车,但是任何尊重自己的驾驶员都不承认曾经驾驶过。

C# 家用旅行车的有力竞争者。一旦你用这种汽车,就不能用它的竞争对手的汽车了。

C++ 是C跑车的加强马力版,比C多了几十个额外特性。每250英里损坏一次,问题是损坏的时候谁都找不到问题在哪。

Continue reading

5月 30

使用Perl绘制统计图

注意:请将代码中的“》”(中文全角)全部替换为“>”(英文半角)。

  • Bar

代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#!/use/bin/perl
 
use SVG::TT::Graph::Bar;
 
my @fields        = qw(Jan Feb Mar);
my @data_sales_02 = qw(12 45 21);
 
my $graph = SVG::TT::Graph::Bar-new(
  {
      'height' ='500',
      'width'  ='300',
      'fields' =@fields,
  }
);
 
$graph-》add_data(
  {
      'data'  =@data_sales_02,
      'title' ='Sales 2002',
  }
);
 
open( my $fh, '》', "bar.svg" );
select $fh;
binmode $fh;
print $graph-》burn();
close($fh);

输出:
bar
Continue reading

5月 18

【转载】Perl命令行/行命令参数简介

Perl语言中有很多Perl命令行参数。通过它们,我们有机会写出更简单的程序,在这篇文章里我们来了解一些常用的参数。主要包括五部分的内容。

第一部分:Safety Net Options安全网参数

在使用Perl尝试一些聪明(或stupid)的想法时,错误难免会发生.有经验的Perl程序员常常使用三个参数来提前找到错误所在,

1:-c

这个参数编译Perl程序但不会真正运行它,由此检查所有语法错误。

1
perl -c program.pl

2:-w

它会提示你任何潜在的问题。Perl5.6.0之后的版本已经用use warnings;替换了-w。你应该使用use warnings,因为它要比-w更灵活。

3:-T

它把perl放到了tain模式。在这个模式里,Perl会质疑任何程序外传来的数据。例如,从Perl命令行读取,外部文件里读取或是CGI程序里传来的数据。这些数据在-T模式里都会被Tainted掉。
Continue reading

5月 16

Shell与Perl中的颜色控制

1.控制码
e[0m 关闭所有属性
e[1m 设置高亮度
e[4m 下划线
e[5m 闪烁
e[7m 反显
e[8m 消隐
e[30m–33[37m 设置前景色
e[40m–33[47m 设置背景色
e[nA 光标上移n行
e[nB 光标下移n行
e[nC 光标右移n行
e[nD 光标左移n行
e[y;xH 设置光标位置
e[2J 清屏
e[K 清除从光标到行尾的内容
e[s 保存光标位置
e[u 恢复光标位置
e[?25l 隐藏光标
e[?25h 显示光标
Continue reading

5月 16

Perl中的switch实现

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