Perl中常见符号与操作
注释:
1.单行:#print
2.多行:=pod….=cut
查询perl相关:
Perldocperlvar($a,$$,$”...)
Perldocperfunc(sort…)
Perldocperl查看perldoc文章列表
Perldoc–q正则表达式
Perldoc–f函数名
Perldocmodule_name查看模块
Perldoc–v变量名查看变量
Perldocperlop查看操作符
查看模块相关函数:
1.Perl–d–e0
2.Usemodule::submod
3.Smodule::submod
测试程序运行时间:
1.Unix下:Timeperl5perl_program
2.程序内添加:$end_time=time();$elapsed_time=$^T-$end_time;print$elapsed_time;
3.perl程序内使用benchmark模块:usebenchmark;timestamp1=newbenchmark;{Code};timesamp2=newbenchmark;time_run=timediff(timestamp2-timesamp1);
符号:
<=>Spaceshipoperator,太空船操作符:三向的比较数字操作符。$a<=>$b这个操作符比较两个数字,返回-1,0,1。返回1:$a>$b,返回0:$a=$b,返回-1:$a<$b。
$a,$b在sort中使用时代表第一个和第二个进来的标量或数组等
$!根据上下文内容返回错误号或者错误串
$”列表分隔符
$#打印数字时默认的数字输出格式
$$Perl解释器的进程ID
$%当前输出通道的当前页号
$&与上个格式匹配的字符串
$(当前进程的组ID$)当前进程的有效组ID
$*设置1表示处理多行格式.现在多以/s和/m修饰符取代之.
$,当前输出字段分隔符
$.上次阅读的文件的当前输入行号
$/当前输入记录分隔符,默认情况是新行
$:字符设置,此后的字符串将被分开,以填充连续的字段.
$;在仿真多维数组时使用的分隔符.
$?返回上一个外部命令的状态
$@Perl解释器从eval语句返回的错误消息
$[数组中第一个元素的索引号
$\当前输出记录的分隔符
$]Perl解释器的子版本号
$^当前通道最上面的页面输出格式名字
$^A打印前用于保存格式化数据的变量
$^D调试标志的值
$^E在非UNIX环境中的操作系统扩展错误信息
$^F最大的文件捆述符数值
$^H由编译器激活的语法检查状态
$^I内置控制编辑器的值
$^L发送到输出通道的走纸换页符
$^M备用内存池的大小
$^O操作系统名
$^P指定当前调试值的内部变量
$^R正则表达式块的上次求值结果
$^S当前解释器状态
$^T从新世纪开始算起,脚步本以秒计算的开始运行的时间
$^Vperl版本
$^W警告开关的当前值
$^XPerl二进制可执行代码的名字(perl指令)
$_默认的输入/输出和格式匹配空间
$|控制对当前选择的输出文件句柄的缓冲
$~当前报告格式的名字
$`在上个格式匹配信息前的字符串
$'在上个格式匹配信息后的字符串
$+与上个正则表达式搜索格式匹配的最后一个括号
$<当前执行解释器的用户的真实ID
$含有与上个匹配正则表达式对应括号结果
$=当前页面可打印行的数目
$>当前进程的有效用户ID包含正在执行的脚本的文件名
$ARGV从默认的文件句柄中读取时的当前文件名
%ENV环境变量列表
%INC通过do或require包含的文件列表
%SIG信号列表及其处理方式
@_传给子程序的参数列表
@ARGV传给脚本的命令行参数列表
@INC在导入模块时需要搜索的目录列表
$-[0]和$+[0]代表当前匹配的正则表达式在被匹配的字符串中的起始和终止的位置
while(){
my($date,$desc,$income,$expend)=unpack(“A10xA27xA7xA*”);
}
简单说明:
A10:A表示ASCII,A10表示10个ASCIIcharacter,Date的表示就是用10个ASCII码;
x :x表示nullbyte也等于skipabyte,也就是说我们要跳过一个char(|),
A27:然后接着27个ASCIIchar,
x :然后跳过一个vhar,
A7:再接上7个ASCII,
x :在跳过一个char,
A*:最后A*表示不管后面char有多少个,全含括进来。
在通常的子例程调用过程中,并不会搜索@ISA数组。但如果用户以调用方法的语法来调用子程序的话,程序就会去搜索@ISA数组。
@ISA =qw(ExporterNet::CmdIO::Socket::INET);
vars是一个Perl的pragma,用来预定义全局变量。这些预定义后的全局变量qw()列表中的在整个Perl文件中皆可使用,使用了usestrict也不会报警:
usevarsqw($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”;#当前文件的文件名,代表标准输入
print@INC.”\n”;#寻找Perl脚本的地址表。
print%INC;#通过do或requir包含的文件名的目录。
print$#ARGV数组长度-1