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

进程管理

  • 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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值