Perl教程
Perl控制语句
Perl高级

Perl 目录

Perl 目录

不同的操作系统有不同的命令来查看目录中的文件列表。例如,'li' 命令用于Linux,'dir' 命令用于Windows。
但是我们也可以使用Perl 目录函数在Perl 中打开一个目录。在这里,目录处理与文件处理非常相似。
Perl 为目录提供了两种替代方法: 文件通配和目录函数。文件通配通常用于类似的文件子集,而目录函数提供更多选项。

Perl 目录函数

在给定的表格中,我们列出了一些目录功能。
功能 用法
opendir DIRHANDLE, EXPR 它打开一个目录。
readdir DIRHANDLE 它读取一个目录。
rewinddir DIRHANDLE 它将指针定位到开头。
telldir DIRHANDLE 它返回目录的当前位置
seekdir DIRHANDLE, POS 它指向目录内的POS指针。
closedir DIRHANDLE 它关闭一个目录。

Perl 打开/显示目录

要在 Perl 中打开目录,有一个函数 opendir。此函数在成功时返回 true 或在失败时返回 false。
设置 $! 与实际错误消息将显示失败的原因。
语法:
opendir(DIR, 'dirName') or die;
示例:
#!/usr/bin/perl
my $directory = '/users/lidihuo';
opendir (DIR, $directory) or die "Couldn't open directory, $!";
while ($file = readdir DIR) {
  print"$file\n";
}
closedir DIR;
输出:
Perl Directory 1

Perl 创建目录

要在 Perl 中创建新目录,有一个函数 mkdir。您需要所需的权限才能创建目录。
语法:
mkdir(dirName) or die;
示例:
#!/usr/bin/perl
my $directory = '/users/lidihuo/perl';
#creating directory perl
mkdir( $directory ) or die "Couldn't create $directory directory, $!";
print"Directory created successfully\n";
输出:
Directory created successfully
给定快照显示在 /users/lidihuo 目录列表中创建的目录 perl。
Perl 目录 2

SCALAR 上下文中的 Perl 读取目录

要读取目录的内容,使用函数 readdir。在标量上下文中,该函数将一一返回目录中的每一项。读取完所有内容后,它将返回undef。
语法:
while (my $directory = readdir $dh) {
    say $directory;
}
示例:
use strict;
use warnings;
use 5.010;
my $directory = shift // '/users/lidihuo';
opendir my $dh, $directory or die "Could not open '$directory' for reading '$!'\n";
while (my $content = readdir $dh) {
    say $content;
}
closedir $dh;
输出:
Perl Directory 3

Perl 在 LIST 上下文中读取目录

在列表上下文中,readdir 函数将在一个语句中返回目录的所有内容。所以它使用更多的内存。
语法:
my @directory = readdir $dh;
foreach my $directory (@directory) {
    say $directory;
}
示例:
use strict;
use warnings;
use 5.010;
 my $directory  = shift // '/users/lidihuo';
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 Directory 4

Perl 删除目录

要删除 Perl 中的目录,有一个函数 rmdir。您需要所需的权限才能删除目录。要删除的目录在删除之前应该是空的。
语法:
rmdir('dirName') or die;
示例:
#!/usr/bin/perl
$directory = "/users/lidihuo/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 中的目录,有一个函数 closedir。该函数正式关闭目录句柄与目录的连接。虽然,关闭目录在 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";
}
输出:
Perl Directory 5
在上面的输出中,所有的文件都被读入目录,但 grep 只传递带有 .docx 扩展名的文件。
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4