@ 数组
$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)或基类(base class)。它是Perl赖以实现继承的方式。@ISA数组中含有类(包)的列表,当Perl在当前类(包)中无法找到所需方法时,便会在该数组列出的类中查找。如果还是找不到的话,Perl还会搜索并调用AUTOLOAD函数。如果仍然找不到的话,Perl会在预定义的UNIVERSAL包中进行最后的搜索。UNIVERSAL类时所有包的全局基类,也是类继承机制中位于最顶层的类。
在通常的子例程调用过程中,并不会搜索@ISA数组。但如果用户以调用方法的语法来调用子程序的话,程序就会去搜索@ISA数组。
@ISA = qw(Exporter Net::Cmd IO::Socket::INET);
vars 是一个Perl的pragma,用来预定义全局变量。这些预定义后的全局变量qw()列表中的在整个Perl文件中皆可使用,使用了use strict也不会报警:
use 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”;#$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运算的缺省变量,可以视为缓冲区。
例如∶foreach(reverse @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。
{ }∶ 分隔符——用于指明复合语句(分程序)的开始和及结束。
\\∶ perl语言的转义,反斜线。用在单、双引号字符串中。
\'∶ perl语言的转义,单引号。用在单引号字符串中。
\"∶ perl语言的转义,双引号。用在双引号字符串中。
\a∶ perl语言的转义,响铃。用在双引号字符串中。
\b∶perl语言的转义,退格。用在双引号字符串中。
\b∶用于常规表达式(正则表达式),置于两个/之间,表示在字间进行匹配。
例如∶
$str="the apple there";$str=~s/the/an/g;替换后$str="an apple anre"
$str="the apple there";$str=~s/\bthe\b/an/g;替换后$str="an apple there"
\B∶用于常规表达式(正则表达式),置于两个/之间,表示在字内进行匹配。
\d∶表示匹配一个数字,等价于[0-9]。用于常规表达式(正则表达式),置于两个/之间。
\D∶表示匹配一个非数字,等价于[^0-9]。用于常规表达式(正则表达式),置于两个/之间。
\E∶perl语言的转义,终止\L、\U、\Q的功能。用在双引号字符串中。
\l∶perl语言的转义,下个字母小写。用在双引号字符串中。
\L∶perl语言的转义,以下到\E为止的所有字母小写。用在双引号字符串中。
\n∶perl语言的转义,换行。用在双引号字符串中。如果在单引号字符串中,\n照样显示\n。
\Q∶perl语言的转义,所有非字母数字字符加上反斜线。用在双引号字符串中。
\r∶perl语言的转义,回车。用在双引号字符串中。
\s∶表示空白字符(空格、回车、制表符、换行符和换页符等),等价于[\r\t\n\f]。用于常规表达式(正则表达式),置于两个/之间。
\S∶表示非空白字符(包括字母、标点符号、控制字符等),等价于[^\r\t\n\f]。用于常规表达式(正则表达式),置于两个/之间。
\t∶perl语言的转义,制表符。用在双引号字符串中。
\u∶perl语言的转义,下个字母大写。用在双引号字符串中。
\U∶perl语言的转义,以下到\E为止的所有字母大写。用在双引号字符串中。
\w∶表示单词字符(字母、数字和下划线),等价于[a-zA-Z0-9_]。用于常规表达式(正则表达式),置于两个/之间。
\W∶表示非单词字符(除字母、数字和下划线之外的所有字符),等价于[^a-zA-Z0-9_]。用于常规表达式(正则表达式),置于两个/之间。
do∶循环语句。
例一∶do while循环语句的应用
$i=1;
do
{
print $i,' ';
$i++;
}while($i<=10);
例二∶do until循环语句的应用
$i=1;
do
{
print $i,' ';
$i++;
}until($i>10);
e∶(1)perl语言替换命令的选项,表示替换一个数值表达式(perl表达式)而不是字符串。(2)浮点数的幂次形式(如-7.25e45)。
eq∶perl语言的比较运算符,等于。用于比较字符串(比较ASCII码)。
for(变量赋初值表达式;循环结束条件表达式;变量增量表达式)∶ 循环语句。
例如∶for循环语句的应用
for($i=0;$i<=10;$i++)
{
print $i,' ';
}
foreach∶ 循环语句。
例∶foreach循环语句的应用(专门处理表和数组的循环)
@list=('a','b','c');
foreach $arg(@list)
{
print $arg,"\n";
}
foreach $i(1..10)
{
print $i,"\n";
}
g∶perl语言替换命令的选项,表示全局替换。
goto∶无条件转移语句,goto后接标识符(命名的标号)。
例如∶goto语句的应用
$i=1;
loop:
print $i++,' ';
if($i<=10)
{
goto loop;
}
ge∶perl语言的比较运算符,大于等于。用于比较字符串(比较ASCII码)。
gt∶perl语言的比较运算符,大于。用于比较字符串(比较ASCII码)。
i∶perl语言替换命令的选项,表示不区分大小写,都替换。
if(表达式)∶ 条件判别语句。表达式为真则执行随后在{ }中的语句,表达式为假,则执行elseif或else后面{ }内的语句。
le∶perl语言的比较运算符,小于等于。用于比较字符串(比较ASCII码)。
lt∶perl语言的比较运算符,小于。用于比较字符串(比较ASCII码)。
ne∶perl语言的比较运算符,不等于。用于比较字符串(比较ASCII码)。
reverse∶perl语言的运算符,使哈希表的关键字和值互换。
例∶%s2=reverse %s1;
s∶替换运算符。
用法∶
1.$变量名=~s/要被替换的字符串/替换的字符串/参数;
2.$_="长字符串";
s/要被替换的字符串/替换的字符串/参数;
tr∶转换运算符。
例如∶$name=~tr/A-Z/a-z/;
将所有大写字符变成小写。
until(表达式)∶ 循环语句。
例如∶until循环语句的应用
until($i>10)
{
print $i,' ';
$i++;
}
while(表达式)∶ 循环语句。若表达式为真,执行随后{ }内的语句。
例如∶while循环语句的应用
while($i<=10)
{
print $i,' ';
$i++;
}
x∶perl语言的字符串重复运算符。对其左边的运算对象(字符串)按右边的运算对象(数字)指出的份数进行重复拼接。