Perl中常见符号与操作

注释:

1.单行: #print
2.多行:=pod …. =cut

查询perl相关:

Perldoc perlvar($a,$$,$”...)
Perldoc perfunc(sort…)
Perldoc perl 查看perldoc文章列表
Perldoc –q 正则表达式
Perldoc –f 函数名
Perldoc module_name 查看模块
Perldoc –v 变量名 查看变量
Perldoc perlop 查看操作符

查看模块相关函数:

1.Perl –d –e 0
2.Use module::submod
3.S module::submod

测试程序运行时间:

1.Unix下:Time perl5 perl_program
2.程序内添加:$end_time = time();$elapsed_time = $^T - $end_time; print $elapsed_time;
3.perl程序内使用benchmark模块: use benchmark; timestamp1 = new benchmark; {Code};timesamp2 = new benchmark; time_run = timediff(timestamp2 - timesamp1);

符号:

<=> Spaceship operator,太空船操作符:三向的比较数字操作符。$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 从新世纪开始算起,脚步本以秒计算的开始运行的时间
$^V perl版本
$^W 警告开关的当前值
$^X Perl二进制可执行代码的名字 (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个ASCII character, Date的表示就是用10个ASCII码;
  x  : x表示null byte也等于skip a byte,也就是说我们要跳过一个char(|),
  A27: 然后接着27个ASCII char,
  x  : 然后跳过一个vhar,
  A7 : 再接上7个ASCII,
  x  : 在跳过一个char,
  A* : 最后A*表示不管后面char有多少个,全含括进来。

在通常的子例程调用过程中,并不会搜索@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”;#$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

(0)

相关推荐

  • Perl中常见符号与操作

    注释: 1.单行: #print 2.多行:=pod -. =cut 查询perl相关: Perldoc perlvar($a,$$,$"...) Perldoc perfunc(sort-) Perldoc perl 查看perldoc文章列表 Perldoc –q 正则表达式 Perldoc –f 函数名 Perldoc module_name 查看模块 Perldoc –v 变量名 查看变量 Perldoc perlop 查看操作符 查看模块相关函数: 1.Perl –d –e 0 2.U

  • Java中常见的日期操作(取值、转换、加减、比较)

    Java 的开发过程中免不了与 Date 类型纠缠,准备总结一下项目经常使用的日期相关操作,JDK 版本 1.7,如果能够帮助大家节约那么几分钟起身活动一下,去泡杯咖啡,便是极好的,嘿嘿.当然,我只提供了可行的解决方案,并不保证是最佳实践,欢迎讨论. 1. 日期取值 在旧版本 JDK 的时代,有不少代码中日期取值利用了 java.util.Date 类,但是由于 Date 类不便于实现国际化,其实从 JDK1.1 开始,就更推荐使用 java.util.Calendar 类进行时间和日期方面的处

  • JavaScript中常见的字符串操作函数及用法汇总

    本文实例总结了JavaScript中常见的字符串操作函数及用法.分享给大家供大家参考.具体分析如下: 最近几次参加前端实习生招聘的笔试,发现很多笔试题都会考到字符串的处理,比方说去哪儿网笔试题.淘宝的笔试题等.如果你经常参加笔试或者也是一个过来人,相信你也跟我一样,发现字符串的处理是前端招聘过程中最常见的题型之一.这些题有一个特点,站在考官的角度去考虑,它考的不是你会不会,而是你能不能在不借用XX手册或者XX指南再或者百度谷歌的情况下,用比较简洁的方式写出答案来.可惜的是,很多开发人员,当然我也

  • Perl中的符号 ->;、=>; 和 :: 分别表示什么意思?

    What do the ->, => and :: symbols mean? The -> is the "infix dereference operator". In other words it is the means by which one calls a sub with a pass by reference (among other things you can do with ->). As stated above most things

  • Perl中的10个操作日期和时间的CPAN模块介绍

    能够操控日期和时间对于大多数编程语言来说是基本的能力,Perl也不例外.但是在碰到与时间相关的更加复杂的处理时,Perl自带的功能常常就显得力不从心了.在这种情况下,上Perl综合典藏网(CPAN)看看是一个好主意,上面有很多随时可以使用的Perl模块,让开发人员能够有效地进行日期和时间操作.花点时间浏览这个网站看看是否能够找到一些在下一个项目里用得上的东西是值得的. 本文列出了Perl CPAN上用来操控日期和时间的10个最有趣的模块,为您下一次转化时区和计算两个时间戳之间的秒数打下了基础,现

  • 一篇文章了解Python中常见的序列化操作

    0x00 marshal marshal使用的是与Python语言相关但与机器无关的二进制来读写Python对象的.这种二进制的格式也跟Python语言的版本相关,marshal序列化的格式对不同的版本的Python是不兼容的. marshal一般用于Python内部对象的序列化. 一般地包括: 基本类型 booleans, integers,floating point numbers,complex numbers 序列集合类型 strings, bytes, bytearray, tupl

  • Perl中的特殊符号介绍

    $_   俗称perl的老地方,当你的程序中未告知使用哪个参数或者变量时,perl就会自动使用$_中的值,比如 for(1..10){ print ; } 这里print没有指定参数,所以它就会使用$_,那$_里面是什么呢?每次循环$_的值都会变化,所以$_实际上就是1 .. 10这10个值,所以上面的代码打印的结果就是12345678910 $! 当且仅当某个函数调用失败时才会设置该变量,所以经常这样使用这个变量 open FILE,"<d:/code/zdd.txt" or

  • perl中的字符串操作函数chomp与chop介绍

    chomp与chop都是用于去除字符串变量尾部的字符,但它们有各自的区别. chomp函数对变量起作用,而此变量含有字符串.如果字符串结尾有换行符,chomp可以去掉它.这基本上就是它能完成的所有功能,如下例: 复制代码 代码如下: $text="alineoftext\n      "; #也可以由<STDIN>输入 chomp($text);    #去掉换行符(\n). 它非常有用,基本上你的每一个程序都会用到它.如你将知道,这是将字符串末尾换行符去掉的最好方法.基于

  • Kotlin中常见的符号详解

    前几年的Google I/O大会上,Google正式宣布,Kotlin将会成为Android开发的官方支持语言.除了Android外,Kotlin还可以完全作为服务端开发的语言,比如在未来的Spring 5就将对Kotlin提供强大的支持.以及浏览器编程语言,与JS进行交互. Kotlin是一门静态语言,支持多种平台,包括移动端.服务端以及浏览器端,此外,Kotlin还是一门融合了面向对象与函数式编程的语言,支持泛型.安全的空判断,并且Kotlin与Java可以做到完全的交互. 现在介绍Kotl

  • MySQL中增删改查操作与常见陷阱详解

    目录 本文导读 一.MySQL的增删改查 1.insert语句 2.delete语句 3.update语句原理 4.select 二.15种MySQL数据操作语句 1.REPLACE语句 2.CALL语句 3.TABLE语句 4.WITH语句 三.MySQL查询陷阱 总结 本文导读 本文作为MySQL系列第二篇文章,详细讲解了MySQL的增删改查的语句.语义和一些我们经常在开发工作中暴露的问题,MySQL的增删改查又叫数据操作语句,本文有讲些了一些常用的数据操作语句,select语句后续将作为一

随机推荐