一个能够兼容所有特性的HTTP服务器是十分复杂的,特别是一些可选项,或者是一些非传统非标准的字段的处理,更是超级麻烦

下面这个小的web server程序,不仅仅是类socket服务端接收程序,还可以返回给客户端,可以当一个测试程序,测试客户端和代理交互情况;当然如果你手快用C语言来写Socket交互,那么请直接跳过就行了

#!/usr/bin/perl -w

use Socket;
use Ca[......]

Read more

两年前为了更好验证正确性,刚摸PERL,写的一个数据包分析脚本,整体还是比较弱的,缺少了perl的任性

这个脚本优点有:

1:基本能将wireshark的命令行程序tshark的所有用法都揽括在内了,再也不用担心不会命令了

2:离线能够分析链路层,IP层,TCP层以及HTTP层的相关信息,并以文件方式储存起来

3:由于输入是一个文件列表,所以可以一次性处理多个数据包文件,每个文件信息分开储存起来

[……]

Read more

在验证正确性的时候,时常要统计指定端口的流量,也就是frame length,这里是一个简单的PERL程序,将打印所有的端口流量,以及流量所占比例,可以在Linux系统下安装有tshark的环境下运行

#!/usr/bin/perl
##########################################
##input:
##  trace file list
##output:
##[......]

Read more

理论上能正常运行ifconfig的Linux操作系统都可适用这个脚本(当然一般默认会安装perl),打印实时网卡流量和丢包数,好久前当时为了验证输出流量随手写的,多次想改得漂亮点,一直没动手,就这样吧,以免用的时候找不到

其实我还想评论自己一句:把Perl写得跟C语言新手一样,真是Perl的悲哀!!!

#!/usr/bin/perl -w
##############################[......]

Read more

PERL我觉得写得让人抓狂,让人崩溃才是真正领悟到精髓,显然我没这水平,比如快速排序的实现,一如既往地赏心悦目:

sub qsort {
    return () unless @_;
    (qsort(grep { $_ < $_[0] } @_[1 .. $#_]), $_[0],
   &nbsp[……]

Read more

写完前面那篇,感觉十分有价值,突然也想起公司里咋们平时开玩笑的有关架构的评论

分配表是数据,而不是代码,所以它可以在运行时改变,你可以在你想的任何时候插入新的指示到表里;也就是消除了if-else树,更大的价值在于不用在配置里添加了新的内容的时候,又要找到读取,行为函数里,添加读取内容的else if以及一堆或许十分复杂的处理函数,让整个处理过程显得十分的臃肿,可读性比较差;而通过分配表,只需要修[……]

Read more

下面是随手写了一个简单的列子,看上去比较分离而且绕的调用方式

#!/usr/bin/perl -w

sub foo {
    my ($a, $b, $out) = @_;
    if ($a > $b){
        $out->($a, $b);
&nb[……]

Read more

perl和python相比最大的差别除了文化宗旨外,应该就是有没有奇形怪状的符号了,有时候完全不知道到底是要当作什么类型来处理,不过只要把变量的含义和用法弄清楚,再难也比不上C语言里直接来三个指针符号坑爹

$符号表示的是一个元素,可以是标量,也可以是数组或者哈希里的某个元素

$scalar

$array[0]

$hash{‘key’}

@符号表示一个数组,多个元素的集合,下面分别是数组切片和哈希切[……]

Read more