设为首页 收藏本站
查看: 1058|回复: 0

[经验分享] About Perl (zz)

[复制链接]

尚未签到

发表于 2017-5-17 07:30:23 | 显示全部楼层 |阅读模式
Perl
foldunfold


Table of Contents

命令行参数

与C语言的区别

特殊变量

特殊语法

use diagnostics;

文件判断符

启动和结束操作

本地文档(Here-Document)

字符重复操作符

引号函数

比较操作符号<=>

each %

范围操作符 ..

warn

常用的函数

pack, unpack, ord, hex

reverse

binmode($handle);

sort

shift, unshift, push, pop

glob

系统调用

open管道

常用的扩展包

Text::Tabs

GetOpt::Long

File

List::Util

Win32

Tk

经典书籍





命令行参数
  perl -e "$cmd1" -e "$cmd2" #通过 -e 可直接输入程序。
perl -d -e 1 #进入调试程序,1是最简单的程序。类似perl shell 使用。-de 可连用
perl -c #编译Perl脚本
环境变量 PERL5LIB 中定义的目录会附加到Perl的库搜索路径中,从而扩展用户自定义的库。

与C语言的区别
  {}
f或for之后跟随单条语句时,C中是可以省略{}的,但Perl不行,只有if后置时才可省略。
  循环控制
循环的流程控制关键字,C中的continue和break对应Perl中的next和last。
  文件包含
Perl中使用require $another_file 包含其他脚本(或者use),对应C中的include
use是在编译阶段就会导入,而require是在运行时实时导入的!
  true, false
Perl没有true/false 定义, 故误用 $cmd if (false) 中$cmd会执行的!

  注:有本面向C程序员的Perl教程,从C的角度来介绍Perl,很适合C程序员。(书名忘了,下次补上)


特殊变量

$_
默认标量名
@_
默认数组名
$n
regexp中的第n个匹配部分
$null
空变量,可用来占编码位置。
$^O
操作系统名
$!
上一个系统调用失败时的出错信息(只有调用失败时才有意义)
$?
保存系统调用的返回值
%SIG
该hash表指向信号处理函数,例如 $SIG{DIE} = \&diehandle;可修改sigint 的处理函数。特殊语法

use diagnostics;
  使用use strict;这个选项时, 若开启use diagnostics;则会为语法检查中的错误输出详细的解释。
另外 no strict; 可以在当前作用域内关闭检查!

文件判断符
  $do_something if (-e $file); #判断$file是否exist。(详细判断列表待补充 …)

启动和结束操作
  BEGIN { $begin_operation; } #在程序开始时执行
END { $end_operation ; } #在程序结束时执行

本地文档(Here-Document)

$msg = <<E_O_F;
#everything here will be put into $msg
E_O_F

  在E_O_F(这个名字可换)之间包含的所有文字原封不动的放入$msg当中
?和E_O_F之间不可有空格,E_O_F与;间可有空格。但可用"E_O_F"限定。

字符重复操作符
  ‘#’ x 3 生成字符串 “###”
@array = ("*") x100 可将整个数组初始化为100个*

引号函数

qq: "
: q
'比较操作符号<=>

$a<=>$b
在a>b返回1,a<b返回-1, a=b返回0。只用于数字比较! 可用在sort中。each %

while ( ($key, $val) = each %hash ) { $cmd; }

  可遍历整个hash, 并且处理较大的hash时,速度要比先用keys,再一一读取快得多。

范围操作符 ..
  例如 foreach (0..20)中的.. 只可升序(是否有降序形式?)

warn

warn <<"E_O_F";
this is a warning message!
E_O_F

  可直接输出warning.

常用的函数

pack, unpack, ord, hex
  提供多个进制之间的数据转换( 使用方式待补充… )

reverse
  反转字符串

binmode($handle);
  可切换文件句柄至2进制模式

sort
  用于排序,默认情况下按照ASCII排序
sort { $a<=>$b } @array; 按 {$cmd } 返回值排序。

shift, unshift, push, pop
  数组在使用shift, unshift时看作fifo
  使用push, pop时看作stack

glob
  使用通配符获得文件列表,
可简写为 @cfiles = <*.c>;
<*>可以返回所有文件和文件夹
另外也可以使用opendir/readdir/closedir组合,但要复杂一些

系统调用
  @dir = ‘dir`; @dir = qx(dir); #注意其内部会对$@处理,但不处理%,qx’$var' 可禁止其处理!
  这种方式类似于system 函数,但system不会捕获输出,这里会返回输出结果。

open管道

open(fhandle, "|more");


打开输出到more的管道,使得输出可分页显示
open(fhandle, "gzip -dc $zipfile|");


可直接处理压缩文件$zipfile.
常用的扩展包

Text::Tabs
  处理 tab字符很有用,提供expand和unexpand方法转换tab和空格。

GetOpt::Long
  类似Unix函数GetOpt, 提供解析命令行选项的功能,使用时最好把所有选项集中于hash表中,方便统一管理。另外,在解析完参数后,ARGC和ARGV会被修改,指向未被解析的参数。

File
  ::Path 处理路径相关任务,比如mkpath方法可创建多个目录。
  ::Find 搜索文件或目录。

List::Util
  列表操作。Shuffle 函数可以将列表顺序随机打乱。

Win32
  Win32::OLE 通过OLE接口操作其他软件。
  Win32::ClipBoard 控制系统剪贴板。
  Perl本身附带提供了一个OLE browser程序,类似VC的OLE viewer, 可查看OLE接口。

Tk
  Tk界面扩展包 (是否需要 Tcl库?)

经典书籍
  1. Programming Perl
2. Perl CookBook



  page tags: perl 脚本语言

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-378263-1-1.html 上篇帖子: perl-锚位 下篇帖子: Perl学习总结
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表