Perl

《Perl》 马六甲鸡汤街

> 只要不会因为拿掉括号而改变愿意,括号就是可省略的。

不同语言的设计逻辑确实有差异,需要抛开C的思维,打开Perl的思路。

打开警告

undef

状态码

退出值0代表正常,非零退出代表异常。

默认变量

$!只能捕获系统调用相关错误。

环境变量

比如PATH

在程序开始时候,%ENV会保留从父进程继承而来的设定值。修改该值会被新进程继承。但修改从父进程继承的环境变量并不能影响shell或者其他父进程。

数组越界不奔溃(未初始化的为undef)

双引号会把变量替换

单引号除了单引号和反斜线字符外,其他字符都代表它们自己( 表示一个反斜线和n)

可能splice看起来不起眼,但在其他语言中要实现相同功能并不轻松。许多人为了达到相同目的,使用各种复杂概念和技术,比如链表什么的,但这无疑是把程序员的时间浪费在低层次的数据处理上,既不合理也不高明。

数组和普通变量可以共用一个名字!所以取名可以参考前缀

@可以获得整个数组

chomp函数可以去掉一行字符串的最后一个换行符(如果有的话)

foreach中的控制变量(item)在循环中并不是数组变量的拷贝,而是变量自身!因此在循环中修改了控制变量就会修改数组本身!同时,控制变量作用域是仅限于foreach,与前面定义的不冲突。

sort是按字符在计算机内部编码顺序排序的!所以如果要排序需要注意排序结果,比如要对数字排序,那么使用sort可能不对

上下文

标量上下文和列表上下文。同一个表达式在不同的地方会有不同的意义。

比如

@people = sort @data

$number =42 + @data

一个是对data排序,一个是计算42+data这个数组的元素个数!

可以使用scalar强制指定标量上下文

常量,空字符串

可以使用readonly来描述

多行字符串

如果有字符串要多行,应该在每个换行符之后断开,再使用“.”连接起来

如果内容太多,可以用heredoc

qw

不要在qw操作符内误用逗号,它会被当做是字符串的一部分。Perl会用空格分割qw内字串。

第十六章 进程管理

可以使用system或者exec

system会创建子进程,子进程会在perl睡眠期间执行(也可以创造后台进程)

exec会使Perl进程自己去执行任务。这类似子程序调用与”goto”的差别。

当运行到exec时候,Perl执行对应命令,此后就没有Perl进程了,这样在命令结束后就没有Perl进程在等待。可以用于使用Perl给对应命令设置启动的环境变量。(学习Perl 276页)

一旦要执行的命令启动后Perl便退出,后面的代码也都无法运行,但如果命令启动失败,后续的错误捕获命令还是可以运行的。

可以使用反引号``来代替单或双引号,用来捕捉命令的输出。

使用system启动子进程时候可以向里面传递参数,如果需要传入的参数是给命令用,那么就需要注意是否是要把参数内插。

system ‘ls $HOME’

注意使用单引号与双引号是有差异的。

    原文作者:HikeForWELL
    原文地址: https://www.jianshu.com/p/fb7fb0e4e725
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞