首页 > 代码库 > 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,没有函数可以修改它。