关闭

Perl 学习笔记(11) -- 进程管理及其他

标签: perldatenumberskillsystemunix
564人阅读 评论(0) 收藏 举报
分类:

进程管理

  • system. 于linux中的系统函数system类似,将产生一个子进程并返回通过参数传入的命令的结果,在执行结束前父进程一直等待。如果需要后台运行则加&符。system也支持多参数版本,后面的参数作为第一个的命令的执行参数合并进来。
  • exec.类似系统的exec系统函数,执行后新的程序替换当前perl脚本进程的进程空间。
  • 反引号捕获输出结果。$date = `date`; @files = `ls`;
  • 将进程视为文件句柄。将进程作文open函数的文件名参数,在执行的进程的左边或右边加上|,作为于perl进程的输出或输入管道。
    open DATE,"date|" or die "cannot pipe frome date:$!";
    open MAIL,"|mail fred" or die "cannot pipe to mail:$!";
    对以读入方式打开的文件句柄DATE可以像文件读取执行的结果。对以写方式打开的MAIL,写入句柄的内容后,一旦close MAIL则会启动发送mail的过程。
  • fork,waitpid和unix的系统函数类似,fork返回值表示新进程的pid,等于0的为子进程。
  • kill可以通过kill发送信号给指定进程, kill $signo, $pid;进程可以指定子句的信号处理函数,通过对系统哈希%SIG赋值改变信号的默认处理函数,$sig{'signo'}=sighandler;
  • eval捕获程序运行时的异常,让程序继续执行下去。如果有异常发生则会发生的异常的错误信息放到系统变量$@中。如果没有eval捕获,则在出现运行时异常时导致程序直接退出,比如除数为0的异常,die产生的异常。eval一般用于对他人写的代码进行调用,为了防止调用导致异常的问题,而采取的捕获方法。
  • eval可以嵌套使用,内层的eval可先捕获而不抛到外层。eval有四中异常不能捕获:
    • 让perl解释器崩溃的错误,比如内存不足或异常信号
    • 显示调用exit而然程序退出的,但是die可以被捕获,所以一般推进用die;
    • 编译的警告,warn之类的。

其他

  • grep筛选列表, grep 匹配语句,列表;对列表的每一个元素用匹配语句进行筛选,返回筛选结果列表,在匹配语句中用$_代替列表中当前要筛选的元素。
  • map对列表进行转换。map 转换语句,列表; 执行过程和grep类似,对列表的每一个元素调用转换语句进行计算,返回转换后的新列表。
  • 切片split,前面已经提到split返回列表,有时候我们只需要获取返回列表的部分位置的元素,如果为了获取部分元素而新建所有的标量是一种大大的浪费。这里我们引入一种新的列表元素表示法.
    my @names = qw{zero one two three four file six seven eight nine}
    my @numbers = @names[1,4,5,0,3,6];#将列表@names的指定下表的元素赋值给@numbers

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:64019次
    • 积分:923
    • 等级:
    • 排名:千里之外
    • 原创:34篇
    • 转载:2篇
    • 译文:0篇
    • 评论:3条
    文章存档