PERL各个符号代表的意思@ 数组
$x{} x名字前⾯是美元符号($),后⾯是花括号({}),则其为 hash 元素
% 要引⽤整个 hash,使⽤百分号(“ )作为前缀。前⾯⼏页中使⽤的 hash 的名字为%family_name。$! 系统产⽣的⼀些可读的信息,也可能是出错的信息
$_ ⼦函数参数变量⾃⼰本⾝
@_ ⼦程序的私有变量
&x 调⽤⼦函数x
<> 数据输⼊.如果没有指定⽂件名,则其从标准输⼊流中⾃动打开和关闭⼀系列⽂件进⾏读⼊
$- 当前页可打印的⾏数,属于Perl格式系统的⼀部分
$! 根据上下⽂内容返回错误号或者错误串
勒鲁什$” 列表分隔符
$# 打印数字时默认的数字输出格式
$$ Perl解释器的进程ID
$% 当前输出通道的当前页号
$& 与上个格式匹配的字符串
$( 当前进程的组ID
$) 当前进程的有效组ID
$* 设置1表⽰处理多⾏格式.现在多以/s和/m修饰符取代之.
$, 当前输出字段分隔符
$. 上次阅读的⽂件的当前输⼊⾏号
$/ 当前输⼊记录分隔符,默认情况是新⾏
$: 字符设置,此后的字符串将被分开,以填充连续的字段.
$; 在仿真多维数组时使⽤的分隔符.
$? 返回上⼀个外部命令的状态 my $ret = $? >>8 if($ret) error
$@ Perl解释器从eval语句返回的错误消息 $EVAL_ERROR
$[ 数组中第⼀个元素的索引号
$\ 当前输出记录的分隔符
$] Perl解释器的⼦版本号
$^ 当前通道最上⾯的页⾯输出格式名字
$^A 打印前⽤于保存格式化数据的变量
$^D 调试标志的值
$^E 在⾮UNIX环境中的操作系统扩展错误信息
$^F 最⼤的⽂件捆述符数值
$^H 由编译器激活的语法检查状态
$^I 内置控制编辑器的值
$^L 发送到输出通道的⾛纸换页符
$^M 备⽤内存池的⼤⼩
$^O 操作系统名
$^P 指定当前调试值的内部变量
$^R 正则表达式块的上次求值结果
$^S 当前解释器状态
$^T 从新世纪开始算起,脚步本以秒计算的开始运⾏的时间
$^W 警告开关的当前值
$^X Perl⼆进制可执⾏代码的名字
$_ 默认的输⼊/输出和格式匹配空间
@ARGV 传给脚本的命令⾏参数列表
@INC 在导⼊模块时需要搜索的⽬录列表
@ISA 数组中列出的类(包)表明了当前类的⽗类(parent class)或基类(ba class)。它是Perl赖以实现继承的⽅式。@ISA数组中含有类(包)的列表,当Perl在当前类(包)中⽆法找到所需⽅法时,便会在该数组列出的类中查找。如果还是找不到的话,Perl还会搜索并调⽤AUTOLOAD函数。如果仍然找不到的话,Perl会在预定义的UNIVERSAL包中进⾏最后的搜索。UNIVERSAL类时所有包的全局基类,也是类继承机制中位于最顶层的类。
白马寺简介在通常的⼦例程调⽤过程中,并不会搜索@ISA数组。但如果⽤户以调⽤⽅法的语法来调⽤⼦程序的话,程序就会去搜索@ISA数组。
@ISA = qw(Exporter Net::Cmd IO::Socket::INET);
vars 是⼀个Perl的pragma,⽤来预定义全局变量。这些预定义后的全局变量qw()列表中的在整个Perl⽂件中皆可使⽤,使⽤了u strict 也不会报警:
u vars qw($TELNET_IAC $TELNET_IP $TELNET_DM);
($TELNET_IAC,$TELNET_IP,$TELNET_DM) = (255,244,242);
$-[0]和$+[0] 代表当前匹配的正则表达式在被匹配的字符串中的起始和终⽌的位置
|- 打开⼀个“输出到”管道,那么你就可以向你打开的这个⽂件句柄写数
-| 打开⼀个“来⾃”管道,那么你可以从这个⽂件句柄读取数据
#!/usr/bin/perl
print $_.”\n”;#缺省输⼊。
print @_.”\n”;#函数参数
#局域变量
print $&.”\n”;#当字符串⽤于模式匹配时,字符串被分成了三部分:匹配以前的部分,匹配上的部分,匹配以后的部分。任何部分都可能是空,这个变量指最近⼀次匹配上的字符串。
print $’.”\n”;#匹配部分以后的部分。
print $`.”\n”;#最近⼀次匹配,匹配部分以前的部分。
print $+.”\n”;#最后⼀个圆括号中的⼦表达式匹配的部分。
print $*.”\n”;#缺省情况下,Perl 为了加快匹配速度,假设模式中不包括新⾏,也就是只执⾏单⾏匹配。如果要执⾏多⾏匹配,就要把此值设成 1。
print @+.”\n”;#这个数组保存当前匹配的最后成功⼦匹配的结尾的偏移量。$+[0]是整个匹配的偏移量。$+[1]是$1 结束的偏移量,$+ [2]是$2 结束的偏移量。
print @-.”\n”;#$-[0] 是最后⼀个成功的匹配的开始的偏移量。$-[n]是第 n 个⼦模式的偏移量,或 undef,如果没有匹配上的话。$-[0]也可
以看成是整个匹配开始的偏移量。$-[1]是$1开始的地⽅,$-[2] 是$2 开始的地⽅,依次类推。
print
#输⼊、输出变量
print $..”\n”;#最近⼀次执⾏读操作的当前⾏数。显式的关闭⽂件句柄重置⾏数。
print $/.”\n”;#输⼊记录分隔符,缺省值是新⾏。
print $,.”\n”;#print操作的输出域分隔符。
安徽十大名吃print $\..”\n”;#print 操作的输出记录分隔符。通常⽤于省略换⾏符。
print $”.”\n”;#当数组转换成字符串时,元素缺省以空格分隔(例如,当打印数组时)。这个变量即代表这个分隔符,缺省是空格。
print $^L.”\n”;#当执⾏⼀个进纸动作时输出的字符。缺省是 \f。
print $:.”\n”;#就是⽬前可以作为折⾏的字符集合。缺省值是” \n“(也就是空⽩,换⾏字符,以及连字号)。
print $^A.”\n”;#格式化⾏的写收集器的当前值。
#错误变量
print $?.”\n”;#$CHILD_ERROR 包含了最近⼀次执⾏的外部程序结束状态。这些程序以办是通过管道,反⼩点 (”) 或system 函数执⾏的。
print $!.”\n”;#$OS_ERROR, $ERRNO 包含了系统的错误。如果⽤在数值的地⽅,就是系统错误码;如果⽤在字符串的地⽅,就是错误信息字符串。
print $^E.”\n”;#$EXTENDED_OS_ERROR 在某些平台,返回扩展错误信息。
print $@.”\n”;#$EVAL_ERROR 从上⼀个 eval 命令的 Perl 语法错误信息
#系统变量
print $$.”\n”;#运⾏当前脚本的 Perl 进程的 pid。
print $<.”\n”;#当前进程的实际⽤户标识符(uid)。
print $>.”\n”;#当前进程的有效⽤户标识符。
print $(.”\n”;#当前进程的实际组标识符(gid)。
print $).”\n”;#当前进程的有效组标识符。
print $0.”\n”;#正在执⾏的 Perl 脚本的⽂件名称。这个参数与执⾏时输⼊有关
员工福利管理制度print $[."\n";#数组中第⼀个元素的序号或⼦串中第⼀个字符的序号。缺省是 0。
print $].”\n”;#返回版本号,加上补丁级别除以 1000。
print $M.”\n”;#$M 的内容能⽤作紧急内存池,以便 Perl 出out-of-memory 错误时使⽤。使⽤$M 要求 Perl 进⾏特殊的编译。 print $^F.”\n”;#最⼤的系统⽂件描述符,通常是 2。
print $^I.”\n”;#原地编辑扩展的当前值。可使⽤ undef 禁⽌原地编辑。
print $^W.”\n”;#警告开关的当前值,真或假。
print $^T.”\n”;#当前脚本开始运⾏的时间。以秒为单位,从 1970年开始。
print $^O.”\n”;#编译 Perl 本⾝时的操作系统名称。
print $^X.”\n”;#⼆进制 Perl 执⾏⽂件的名称。
print $^D.”\n”;#调试标志的当前值。
print $^P.”\n”;#是否打开调试。
print $ARGV.”\n”;#当从< >读⼊时的当前⽂件名。
#其它
print @ARGV.”\n”;#命令⾏参数。
文明出行
print $ARGV.”\n”;#当前⽂件的⽂件名,代表标准输⼊<STDIN>。
print @INC.”\n”;#寻找 Perl 脚本的地址表。
print %INC;#通过 do 或 requir 包含的⽂件名的⽬录。
print $#ARGV 数组长度-1
perl语⾔的常⽤符号
perl语⾔的常⽤符号
--------------------------------------------------------------------------------
--学习笔记
#∶ perl语⾔的注释符,该⾏其后的内容不执⾏。书香校园手抄报内容
$∶匹配定位模式,表⽰最后⼀个字符得匹配,⽤于常规表达式(正则表达式),置于两个/之间最后⾯。
$_/∶ perl运算的缺省变量,可以视为缓冲区。
例如∶foreach(rever @a){print;}就使⽤了缺省变量。
+、-、*、/∶ perl语⾔的运算符——加、减、乘、除。
+∶组合模式,表⽰⼀个或多个它前⾯的字符,等价于{1,},⽤于常规表达式(正则表达式),置于两个/之间。
-∶ 字符列表中间的连接线。
例如∶A-Z,表⽰A到Z之间的所有字符。
+=、-=、*=、/=、%=、|=、&=、^=、~=、<<=、>>=、**=、.=∶ perl语⾔的运算符,修改和替代。
.∶(1)perl语⾔的运算符,位⾮。(2)perl语⾔的字符串连接运算符。(3)模式匹配字符,表⽰除了\n之外的任意字符。⽤于常规表达式(正则表达式),置于两个/之间。例如 $name=~s/\W.*//;(找到第⼀个⾮单词字符,将从这⾥开始的到字符串尾的所有字符全部删除。)
..∶perl语⾔的表运算符,范围运算符。
例⼀∶@number=0..9;#该语句创建了⼀个表,从0到9的整数。
例⼆∶foreach $i(0..9){print "$i\n";}
,
∶(1)perl语⾔的顺序计值符。(2)perl语⾔的表构造符。
*∶组合模式,表⽰零个或多个它前⾯的字符(或字符类),等价于{0,},⽤于常规表达式(正则表达式),置于两个/之间。
**∶perl语⾔的乘⽅运算符。
^∶匹配定位模式,表⽰第⼀个字符得匹配,⽤于常规表达式(正则表达式),置于两个/之间最前⾯。
∶组合模式,表⽰零个或⼀个它前⾯的字符,等价于{0,1},⽤于常规表达式(正则表达式),置于两个/之间。例∶
$str="I xxxxx full";$str=~s/x+/am/g;这时$str="I am full"
$str="I xxxxx full";$str=~s/x+?/am/g;这时$str="I amamamamam full"
!∶perl语⾔的运算符——负。
!~∶perl语⾔的字符串运算符,将⼀个变量绑定到模式匹配,取⾮前两个运算符⽐较简单。
!=∶perl语⾔的⽐较运算符,不等于。⽤于⽐较数值。
&∶perl语⾔的运算符——位与。
&&∶perl语⾔的运算符——逻辑与。
%∶perl语⾔的运算符——模除(取整除后的余数)。
;∶ 分隔符——终⽌⼀条语句。
我喜欢英语:∶ 分隔符——指明标号语句。
++∶ 运算符——增⼀。
-- ∶运算符——减⼀。
= ∶运算符——赋值。
==∶perl语⾔的⽐较运算符,等于。⽤于⽐较数值。
=~:perl语⾔的字符串运算符(相配运算符),将⼀个变量绑定到模式匹配。
例⼀∶$var="china";
print($var=~/ina/)?TRUE:FALSE;
该例确定$var变量⾥是否包含ina模式,输出结果为TRUE。
例⼆∶$var=~s/\+/ /g;
该例中$var变量中所有+(⽤\+表⽰)都被替换成空格。
>=∶perl语⾔的⽐较运算符,⼤于等于。⽤于⽐较数值。
> ∶perl语⾔的⽐较运算符,⼤于。⽤于⽐较数值。
<=∶perl语⾔的⽐较运算符,⼩于等于。⽤于⽐较数值。
<∶perl语⾔的⽐较运算符,⼩于。⽤于⽐较数值。
<=>∶perl语⾔的spaceship运算符。
$a<=>$b;
等价于下⾯三⾏∶
if($a<$b){return -1;}
elsif($a==$b){return 0;}
elsif($a>$b){return 1;}
<<∶perl语⾔的运算符——字位左移。
>>∶perl语⾔的运算符——字位右移。
| ∶perl语⾔的运算符,按位或。
| ∶perl语⾔的模式组合结构,表⽰“或”,⽤于常规表达式(正则表达式),置于两个/之间。
||∶perl语⾔的运算符——逻辑或。
[ ]∶分隔符——指明数组下标。
( )∶ 分隔符——⽤于形成表达式、隔离条件表达式,以及指明函数调⽤和函数参数。
( )∶ 组合模式运算符,⽤于常规表达式(正则表达式),置于两个/之间。该运算符并不改变( )之间字符
的匹配结果,但可以记住这些字符,后⾯可以⽤\和⼀个数字表⽰记住的是第⼏个( )中的字符来进⾏同样的匹配。如果( )中⽤?开头,则不会有记忆功能,仅仅是表⽰优先。
( )∶ 常规表达式(正则表达式)⽤( )表⽰从字符串中抽取⼦字符串,并赋值。
例如∶
$str="January 1,1997";
($m,$d,$y)=$str=~/\s*(\S*)\s+(\d+)\D+(\d{4})/;
考试激励语跳过字符串前所有空格符;把所有⾮空格字符赋值给变量$m;跳过空格符;把所有数字赋值给变量$d;跳过所有⾮数字字符;把接下来的四个数字赋值给变量$y。