Perl
文章平均质量分 52
布鲁斯XiaoY
5年+软件测试自动化相关经验,具备丰富的白盒,黑盒以及系统集成经验。
熟悉常用通信协议,应用协议与应用服务部署。
目前对互联网与物联网兴趣颇丰,尤其后者个人认为将是下一个迭代重心。兹从头开始当Newbie,每天进步一点嘿嘿嘿~
展开
-
How a Perl5 program works
运行一个Perl5 程序分为两个阶段:Complication time & Run time 。Complication time由Source code最终解析成特定的数据结构 optree 。中间可以利用 BEGIN block 触发Complication time 过程中的 Run time 即中断编译,执行代码(其实是数据结构中的内容)Run time原创 2016-03-16 20:31:38 · 503 阅读 · 0 评论 -
[Perl]继承SUPER,-norequire,use parent
parentpackage Baz;use parent qw(Foo Bar);is equivalent to:package Baz;BEGIN { require Foo; require Bar; push @ISA, qw(Foo Bar);}-norequirepackage Foo;sub exclaim { "I CAN HAS PERL" }package原创 2016-10-13 10:06:30 · 1258 阅读 · 0 评论 -
[Perl] 常见signals解析
介绍系统实现 中断机制 依赖于Signals,而其存在是为了当一个程序(Process)运行时,响应“用户请求” or 系统强制介入。 Signals are software interrupts sent to a program to indicate that an important event has occurred. The events can vary from user r原创 2016-04-24 23:12:02 · 882 阅读 · 0 评论 -
[Perl] $SIG{HUP}
Scenarios: 为daemon process重新加载配置 Solution: 可通过接收SIGHUP,并定义操作。如下实现了向 a daemon process 发送SIGHUP,并restart该process。当然,也可以是加载配置。#!/usr/bin/perluse strict;use warnings;use POSIX ();use FindBin ();use F原创 2016-04-24 22:59:32 · 1040 阅读 · 0 评论 -
[Perl]$SIG{INT}
Scenarios: 在程序运行过程中,受到外界终端干扰,如Ctrl+C,导致意外中断 Solution: 可通过 $SIG{INT} 接受 SIGINT 并处理中断,如回收临时文件[root@localhost tmp]# perl /test_sigint.pl$SIG{'INT'} = 'my_int_handler';my $temp_directory = "/tmp/myprog.原创 2016-04-24 15:08:50 · 1942 阅读 · 0 评论 -
[Perl] $SIG{ALRM}
Scenarios: 可能出现hang的操作,如 connect remote server… Solution: 设置alarm,并通过SIGALRM终止操作 local $@;eval { local $SIG{ALRM} = sub { print "Got SIGALRM\n"; die "alarm clock restart" };原创 2016-04-24 02:18:49 · 2201 阅读 · 0 评论 -
[Perl]REAPER
场景在程序中遇到耗时较长的操作(如等待用户响应,连接remote server),通常会想到创建 Child process 去处理。在Perl 中 使用fork()## fork a child processdie "$@" unless defined( my $child_pid = fork());if ($child_pid) { # If I have a child PID,原创 2016-04-22 02:14:43 · 796 阅读 · 0 评论 -
OO in Perl5
OO说起 OO 首先跳出“Object”与“Class”这个两个概念。Perl也不例外,在 Perl5 中对 OO programming进行了设计与支持。如下图所示: Perl 5 中设计了一个Base class UNIVERSAL, 它是所有Class的最终父类。如下所述: All classes inherit from the UNIVERSAL class implicitly.T原创 2016-03-20 22:29:07 · 488 阅读 · 0 评论 -
@EXPORT and @EXPORT_OK
@EXPORTExport souroutines with no need to initialize an object.use File::Basename; ## likeBEGIN { require File::Basename; File::Basename->import }其中的import没有传入list,并不意味着import nothing,而是将 @EXPORT 里所有原创 2016-03-20 21:11:58 · 783 阅读 · 0 评论 -
use vs require in Perl5
Perl5 的程序执行分为两个阶段:compilation time & run time。而 use 与 require 依次发生在这两个不同的阶段。 值得注意的是:Parser对use的处理等同如下:use strict;likeBEGIN{ require 'strict.pm'; strict->import();}NOTE:BEGIN block是在compilatio原创 2016-03-16 17:58:31 · 735 阅读 · 0 评论 -
Perl 5 中的三大OO特性
Encapsulation首先,将代码段进行封装,成函数。使用中可以优化,并降低代码冗余度,将先前的函数泛化。再次,总结所处理对象特性,提取重构成类。 code block —–> subroutine —–> generalization —–> rarefaction (Class) Inheritance继承是 OO 呈上启后的特性。在Perl 5 中使用 use parent xxx;原创 2016-03-20 23:42:39 · 750 阅读 · 0 评论