About Perl (zz)

Perl

命令行参数

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 脚本语言

你可能感兴趣的:(C++,c,C#,F#,perl)