perl中的目录操作函数有:
1。mkdir 函数
调用语法:mkdir (dirname, permisions)
dirname:将要创建的目录名,可以为字符串或表达式。
permisions:八进制数,指定目录的访问权限。其值和意义如下:
权限值 权限
4000 运行时设置用户 ID
2000 运行时设置组 ID
1000 粘贴位
0400 拥有者读权限
0200 拥有者写权限
0100 拥有者执行权限
0040 组读权限
0020 组写权限
0010 组执行权限
0004 所有人读权限
0002 所有人写权限
0001 所有人执行权限
2。chdir 函数
调用语法:chdir (dirname)
3。opendir 函数
调用语法:opendir (dirvar, dirname)
dirvar:目录句柄,与文件句柄类似
dirname:目录名,可为字符串或表达式
调用成功返回真,否则返回假
4。closedir 函数
调用语法:closedir (mydir)
5。readdir 函数
调用语法:readdir (mydir)
6。telldir 函数
调用语法:location = telldir (mydir)
返回当前所在目录
7。seekdir 函数
调用语法:seekdir (mydir, location)
location必须为telldir 函数返回的值
8。rewinddir 函数
调用语法:rewinddir (mydir)
9。rmdir 函数
调用语法:rmdir (dirname)
案例:
点击(此处)折叠或打开
- #! perl
- use 5.014;
- use File::stat;
- use File::Copy;
- use POSIX qw(strftime);
- my $path = "E:/test";
- my $yearMonth = strftime("%Y%m",localtime());
- my $day = strftime("%d",localtime()) - 1;
- my $toDate = $yearMonth . $day;
- say $toDate;
- #列出目录下的所有文件
- sub listdir {
- my (@dirs) = @_;
- my @arr;
- my $handle; #目录句柄
-
- for (my $i = 0; $i < @dirs; $i++) {
- my $dir = $dirs[$i];
- #判断是否为目录
- if ( -d $dir ) {
- #成功打开了目录句柄
- if ( opendir ($handle,$dir) ) {
- #读取目录下所有的文件
- while (my $readdirs = readdir($handle)) {
- if ( $readdirs ne '.' and $readdirs ne '..' ) {
- #再次测试拿的文件是否为目录
- my $filePath = "$dir/$readdirs";
- if ( -d $filePath ) {
- push (@arr,$filePath);
- } else {
- #这里就是文件了
- my $changeFileDate = strftime "%Y%m%d", (localtime stat($filePath)->mtime)[0..5];
- if ($toDate eq $changeFileDate) {
- copy($filePath,"E:/123");
- print $filePath . " date $changeFileDate\n";
- }
- }
- }
- }
- closedir $handle;
- }
- }
- }
- listdir (@arr) if @arr > 0;
- }
- &listdir("E:/樣品程式","E:/生產程式");