进阶开发(Perl目录全解)

本文概述

  • Perl目录函数
  • Perl打开/显示目录
  • Perl创建目录
  • SCALAR上下文中的Perl读取目录
  • Perl在LIST上下文中读取目录
  • Perl删除目录
  • Perl变更目录
  • Perl关闭目录
  • 使用文件通配的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目录全解)

文章图片
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目录全解)

文章图片
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目录全解)

文章图片
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目录全解)】要在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目录全解)

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

    推荐阅读