首页 > 代码库 > Perl语言学习笔记 13 目标操作

Perl语言学习笔记 13 目标操作

1、改变目录

chdir "/etc" or die "can‘t chdir to ‘/etc‘!\n";

省略参数会回到用户主目录,与cd效果一样;

2、文件名通配

my @all_files = glob "*";#不包括以点号开头的文件

my @pm_files = glob "*.pm";

一次匹配多种模式,用空格隔开:my @files = ".* *";#可以匹配所有的文件,包括以点号开头

3、文件名通配另一种语法

my @files = <*>;##等效于:my @files = glob "*";

支持变量内插:my $dir="/etc";my @dir_files=<$dir/* $dir/.*>;

尖括号支持文件句柄和文件名通配,Perl会自行判断选择哪一种操作,如果是标识符,就当作文件读取,否则按文件名通配处理:

4、目录句柄

目录句柄可以打开(opendir)、读取(readdir,读取的为文件名)、关闭(close);

目录句柄是低级操作符,只能返回基本的信息,需要进行额外处理。

5、删除文件

unlink "file1","file2","file3";##返回成功删除的文件数,无法知道哪个删除失败

不能用来删除目录;

一次删除多个文件:unlink glob "*.o";

删除文件的权限和文件本身的权限无关,取决于文件所在目录的权限,因此某个无法读取、写入、执行的文件也可能被删除;

6、重命名文件

rename "old","new";

实现类似mv的效果:rename "/home/place/file1" "file2"

7、链接与文件

硬链接:

会使文件的链接数增加,只要有一个链接存在,文件就存在。

不能增加目录的链接数,不能跨挂载卷链接。

软链接(符号链接):

不会增加文件的链接数,可以指向不存在的文件

取得符号链接指向的位置:

8、建立及移除目录

建立目录:

 

0755为权限,无法将字符串直接解释成八进制数字,需用otc函数:

移除目录:

每次只能删除一个目录,并且必须是空目录,如果不是空目录,可以用unlink删除:

$$:当前进程号。

如果目录中还有子目录,则unlink会失败,进而导致rmdir失败。File::Path模块中的 rmtree 提供了比较完整的解决方案。

9、修改权限

chmod 0755,"file1","file2";

10、更改隶属关系

必须以数字形式指定用户标识符和组标识符,如果不知道,可采用如下方式处理:

11、修改时间戳

第三个时间戳 ctime 一定会被设为now,没有函数可以修改它。