本文概述
- Perl目录函数
- Perl打开/显示目录
- Perl创建目录
- SCALAR上下文中的Perl读取目录
- Perl在LIST上下文中读取目录
- Perl删除目录
- Perl变更目录
- Perl关闭目录
- 使用文件通配的Perl打开目录
但是我们也可以使用Perl目录函数在Perl中打开目录。在这里, 目录处理与文件处理非常相似。
Perl为目录提供了两种选择:文件遍历和目录函数。文件通配通常用于文件的相似子集, 而目录函数提供更多选项。
Perl目录函数 在给定的表中, 我们列出了一些目录函数。
Function | Usage |
---|---|
opendir DIRHANDLE, EXPR | 它打开一个目录。 |
readdir DIRHANDLE | 它读取目录。 |
rewinddir DIRHANDLE | 它将指针定位到起点。 |
Telldir DIRHANDLE | 返回目录的当前位置 |
seekdir DIRHANDLE, POS | 它在目录中指向POS的指针。 |
closedir DIRHANDLE | 关闭目录。 |
设定$!带有实际错误消息将显示失败原因。
句法:
opendir(DIR, 'dirName') or die;
例:
#!/usr/bin/perl
my $directory = '/users/srcmini';
opendir (DIR, $directory) or die "Couldn't open directory, $!";
while ($file = readdir DIR) {
print "$file\n";
}
closedir DIR;
输出
文章图片
Perl创建目录 要在Perl中创建一个新目录, 有一个函数mkdir。你需要创建目录的权限。
句法:
mkdir(dirName) or die;
例:
#!/usr/bin/perl
my $directory = '/users/srcmini/perl';
#creating directory perl
mkdir( $directory ) or die "Couldn't create $directory directory, $!";
print "Directory created successfully\n";
输出
Directory created successfully
给定的快照在/ users / srcmini目录列表中显示了创建的目录perl。
文章图片
SCALAR上下文中的Perl读取目录 要读取目录的内容, 请使用函数readdir。在标量上下文中, 此函数将逐个返回目录的每个项目。读取所有内容后, 它将返回undef。
句法:
while (my $directory = readdir $dh) {
say $directory;
}
例:
use strict;
use warnings;
use 5.010;
my $directory = shift // '/users/srcmini';
opendir my $dh, $directory or die "Could not open '$directory' for reading '$!'\n";
while (my $content = readdir $dh) {
say $content;
}
closedir $dh;
输出
文章图片
Perl在LIST上下文中读取目录 在列表上下文中, readdir函数将在一条语句中返回目录的所有内容。因此它使用更多的内存。
句法:
my @directory = readdir $dh;
foreach my $directory (@directory) {
say $directory;
}
例:
use strict;
use warnings;
use 5.010;
my $directory= shift // '/users/srcmini';
opendir my $dh, $directory or die "Could not open '$directory' for reading '$!'\n";
my @content = readdir $dh;
foreach my $content (@content) {
say $content;
}
closedir $dh;
输出
文章图片
Perl删除目录 【进阶开发(Perl目录全解)】要在Perl中删除目录, 有一个函数rmdir。你需要必需的权限才能删除目录。你要删除的目录在删除之前应该为空。
句法:
rmdir('dirName') or die;
例:
#!/usr/bin/perl
$directory = "/users/srcmini/perl";
# This removes perl directory from /tmp directory.
rmdir( $directory ) or die "Couldn't remove $directory directory, $!";
print "Directory removed successfully\n";
输出
Directory removed successfully
Perl变更目录 要在Perl中更改目录, 有一个函数chdir。要更改目录并进入新目录, 你需要必需的权限。
句法:
chdir('dirName') or die;
例:
#!/usr/bin/perl
$directory = "/users/";
# TThe directory changes to users.
chdir( $directory ) or die "Couldn't go inside $directory directory, $!";
print "Diretory has been changed to $directory\n"
输出
Diretory has been changed to /users/
Perl关闭目录 要在Perl中关闭目录, 有一个函数closeir。此函数正式关闭目录句柄和目录之间的连接。虽然, 在Perl中关闭目录不是必需的, 因为当变量超出范围时, 目录将自动关闭。
句法:
closedir $dh;
OR
closedir DIR;
使用文件通配的Perl打开目录 要打开目录中与特定模式匹配的所有文件, 请使用Perl文件名glob匹配模式语法。
我们将在目录中显示所有扩展名为.docx的文件的列表。
#!/usr/bin/perl -w
opendir(DIR, ".");
@files = grep(/\.docx$/, readdir(DIR));
closedir(DIR);
foreach $file (@files) {
print "$file\n";
}
输出
文章图片
在上面的输出中, 所有文件都在目录中读取, 但是grep仅传递扩展名为.docx的文件。
推荐阅读
- Perl文件处理用法和实例
- Perl错误处理
- Perl do-while循环
- Perl DBI数据库操作
- Perl命令行参数
- Perl日期和时间
- Perl数据类型
- Perl使用注释
- Perl chop()和chomp()