现在的位置: 首页 > 综合 > 正文

perl语言总结2

2018年04月30日 ⁄ 综合 ⁄ 共 2421字 ⁄ 字号 评论关闭

1.Perl 中所有变量都是全局的;也就是说,这些变量可以在程序的任意部分使用
2.函数调用&chomp;如果编译器在调用之前知道此子程序的定义,或者 Perl 从语法中能知
道这是一个子程序调用,则子程序前的符号&是可以省略的
3.<>的使用
4.printf ?Hello, %s; your password expires in %d days!/n?,
$user, $days_to_die;
5.文件句柄(filehandle)是Perl 程序I/O 连接的名字,是Perl 和外界的纽带。也就是说,它是连接的名字,而非文件的名字。
打开文件句柄:open
open CONFIG, ?dino?;
open CONFIG, ?<dino?;
open BEDROCK, ?>fred?;
open LOG,?>>logfile?;
关闭文件句柄:close BEDROCK;
die 函数来创建我们自己的严重错误.类似于java的throws new exception("Cannot create logfile:"+i)
if(!open LOG, “ >>logfile”
die “ Cannot create logfile:$!”
}
warn 函数与die类似。
6.hash.
要访问hash 元素,可以使用下面的语法:
$hash{$some_key}
$family_name{?fred?} = ?flintstone
Hash 的key 可以是任意的表达式
要引用整个hash,使用百分号(?%?)作为前缀。
hash 可以转换为列表,或者反过来.
hash 之间拷贝:
%new_hash = %old_hash;
%inverse_hash = reverse %any_hash;(反转)

my %last_name = (
“ fred” => “ flintstone
“ dino” => unde
“ barney” => “ rubble
“ betty”=> “ rubble
);
keys函数会返回此 hash 的所有keys,values函数将返回所有的 values。
my@k = keys %hash;
my@v = values %hash;

if(%hash){
print ?That was a true value!/n?;
}
述语句为true,当且仅当其至少含有一个key/value对

如果想迭代hash 的每一个元素(如,检查每一个元素) ,一种通常的方法是使用 each 函数,它将返回 key/value对的2元素
列表◆。当对同一个 hash 函数进行一次迭代时,将返回下一个 key/value 对,直到所有的元素均被访问。
实践中,一般只在while 循环中使用each:
while (($key, $value) = each %hash){
print ?$key => $value/n?;
}
foreach也可以使用。

要查看hash 中是否存在某个key(某人是否有借书卡) ,可以使用 exists 函数,如果hash 中存在此 key,则返回true,这和
是否有对应的value 无关:
if(exists $books{$dino}){
print ?Hey, there?s a libaray card for dino!/n?;
}

delete函数将某个给定的 key(包括其对应的value)从hash 中删除。 (如果不存在这个key,则什么也不做;不会有警告或者
错误信息。 )
my $person = ?betty?;
delete $books{$person}; #将$person 的借书卡删除掉
7.支持自增和自减
8.裸块一般为私有变量提供作用域
9.循环控制:
last会立刻结束循环。 (这同 C 语言或其它语言中的?break?语句类似) 。它从循环块中“紧急退出” 。当执行到 last,循环即
结束
有时还不希望结束循环,但本次循环已经结束。这种情况下,next 是非常适用的。它跳到当前循环块的最后面(块内)◆。
next之后,又会进入下一轮循环(这和C 或者类似语言的 ?continue?相似)
循环控制的第三个操作是 redo。它会调到当前循环块的顶端,不进行条件表达式判断以及接着本次循环。 (在 C 或类似语
言中没有这种操作。 )
10.三元操作符 ?:Express ? if_true_expr : if_false_expr
&&, || , ?:,均有一个共同的特殊性质:根据左侧的值(true或 false) ,来判断是否执行右侧代码
11.操作目录:
chdir可以改变工作目录。它和 Unix shell下的 cd命令类似:
chdir ?/etcr die ?cannot chdir to /etc: $!?;

从给定目录得到其文件名列表的方法还可以使用目录句柄(directory handle) 。目录句柄外形及其行为都很像文件句柄。打
开(使用opendir 而非 open) ,从中读入(使用 readdir而非 readline) ,关闭(使用 closedir 而非close) 。不是读入文件的内
容,而是将一个目录中的文件名(以及一些其它东西)读入

在Unix shell中,我们
可以使用rm命令将单个文件或一批文件删除:
$ rm slate bedrock lava
在Perl中,我们使用 unlink:
unlink ?slate?, ?bedrock?, ?lava?;

将一个给定文件重命名可以很简单的使用rename 函数做到:
rename “ old” , “ new
这类似于Unix 的mv 命令,将一个叫做old的文件重命名为new,且在同一个目录中。甚至可以在不同的目录之间操作:
rename ?over_there/some/place/some_file?, ?some_file?;

在一个目录下创建新目录是很容易的。使用 mkdir函数:
mkdir ?fred?, 0755 or warn ?Cannot make fred directory: $!?;
true意味着成功,$!会在失败时被置值。

Unix的chomd 命令可以改变文件或目录的权限。同样的,Perl 的chomd函数也能完成这种任务:
chmod 0755, ?fred?, ?barney?;

抱歉!评论已关闭.