个性化阅读
专注于IT技术分析

进阶开发:Perl目录全解

点击下载

本文概述

不同的操作系统具有不同的命令来查看目录中的文件列表。例如, ” li”命令用于Linux, ” dir”命令用于Windows。

但是我们也可以使用Perl目录函数在Perl中打开目录。在这里, 目录处理与文件处理非常相似。

Perl为目录提供了两种选择:文件遍历和目录函数。文件通配通常用于文件的相似子集, 而目录函数提供更多选项。

Perl目录函数

在给定的表中, 我们列出了一些目录函数。

Function Usage
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/srcmini';
opendir (DIR, $directory) or die "Couldn't open directory, $!";
while ($file = readdir DIR) {
  print "$file\n";
}
closedir DIR;

输出

Perl目录1

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。

Perl目录2

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目录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/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目录4

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";
}

输出

Perl目录5

在上面的输出中, 所有文件都在目录中读取, 但是grep仅传递扩展名为.docx的文件。

赞(0)
未经允许不得转载:srcmini » 进阶开发:Perl目录全解

评论 抢沙发

评论前必须登录!