控制结构
- 前面已经提到的控制结构有if {} ,if {} else {}, while(){} , foreach 还有些其他的控制结构,比如 unless() {} 是if的反义词,在bool表达式为假的时候执行后面的语句块,同理还有until是while的反义。它们的用法和之前的一样。perl的if,else,until,while,unless等后的遇见都必须带括号,而不象c/C++那样只有一句的时候可以省。为此对于只有一句执行语句时的if,unless,可以使用先斩后奏的方法 print "hello world!\n" if ($OK)。对于多条件判断的语句可以用if(){} elsif(){} else{}来进行。
- for结构。perl也有和C类似的for循环结构for (initialization; test; increment){}, 当然也可以用for(@list_array)来部分代替foreach,在循环结构中可以通过执行last;来终止循环,类似于c的break; next来进入下一次循环,类似C的continue;此外,perl还扩了一种叫redo的控制语句,在循环中遇到redo时,直接重新跳到循环的头语句中,而不执行。
- 三目操作符,perl同样支持c类似的?:操作符,用来替代if () else ()。
- 对于逻辑运算符&&,||常用于条件判断语句中,还可以用于单独执行,比如($m > $n) && say "m is bigger than n";当然&&和||还可以有另外的写法,可以直接写作 and 和 or这更接我们的自然语言。
目标操作
- 在目录树中移动,修改程序的当前目录(工作目录),chdir $dirname;类似cd命令,成功为true否则false。
- 文件名通配符glob, my @allfiles = glob "*" ; my @pmfiles = "*.pm";还可以用尖括号代表glob ,比如my @dir_files = <* dir/.*>;
- 目录句柄。可以通过目录句柄读出目录下的文件列表,打开,读取和关闭操作和文件类似 opendir HD, foreach $file (readdir HD); closedir HD;返回的文件名,不包括文件路径,只有文件名。
- 递归目录出来请试用File::Find
- 删除文件ulink,后接列表,表示要删除的文件unlink glob(*.pm);
- 重命名文件ename, rename $org_filename $newfileName;当然也可以用作文件移动操作,类似mv命令
- 读取链接,readlink $linkname;返回连接$linkname所指向的文件名。
- 建立和删除目录,mkdir $dirname,$permission ,$perminsion是权限位比如0755之类的。rmdir $dirname删除非空目录。
- 修改权限位,修改文件或目录的权限位 chmod $perminssion, $file,$dir