Perl - Каталоги

Ниже приведены стандартные функции, используемые для работы с каталогами.

opendir DIRHANDLE, EXPR  # To open a directory
readdir DIRHANDLE        # To read a directory
rewinddir DIRHANDLE      # Positioning pointer to the begining
telldir DIRHANDLE        # Returns current position of the dir
seekdir DIRHANDLE, POS   # Pointing pointer to POS inside dir
closedir DIRHANDLE       # Closing a directory.

Показать все файлы

Есть разные способы перечислить все файлы, доступные в определенном каталоге. Сначала давайте воспользуемся простым способом получить и перечислить все файлы с помощьюglob оператор -

#!/usr/bin/perl

# Display all the files in /tmp directory.
$dir = "/tmp/*";
my @files = glob( $dir );

foreach (@files ) {
   print $_ . "\n";
}

# Display all the C source files in /tmp directory.
$dir = "/tmp/*.c";
@files = glob( $dir );

foreach (@files ) {
   print $_ . "\n";
}

# Display all the hidden files.
$dir = "/tmp/.*";
@files = glob( $dir );
foreach (@files ) {
   print $_ . "\n";
}

# Display all the files from /tmp and /home directories.
$dir = "/tmp/* /home/*";
@files = glob( $dir );

foreach (@files ) {
   print $_ . "\n";
}

Вот еще один пример, который открывает каталог и перечисляет все файлы, доступные в этом каталоге.

#!/usr/bin/perl

opendir (DIR, '.') or die "Couldn't open directory, $!";
while ($file = readdir DIR) {
   print "$file\n";
}
closedir DIR;

Еще один пример для печати списка исходных файлов C, которые вы можете использовать:

#!/usr/bin/perl

opendir(DIR, '.') or die "Couldn't open directory, $!";
foreach (sort grep(/^.*\.c$/,readdir(DIR))) {
   print "$_\n";
}
closedir DIR;

Создать новый каталог

Вы можете использовать mkdirфункция для создания нового каталога. Вам нужно будет иметь необходимое разрешение для создания каталога.

#!/usr/bin/perl

$dir = "/tmp/perl";

# This creates perl directory in /tmp directory.
mkdir( $dir ) or die "Couldn't create $dir directory, $!";
print "Directory created successfully\n";

Удалить каталог

Вы можете использовать rmdirфункция для удаления каталога. Вам нужно будет иметь необходимое разрешение для удаления каталога. Кроме того, этот каталог должен быть пустым, прежде чем вы попытаетесь его удалить.

#!/usr/bin/perl

$dir = "/tmp/perl";

# This removes perl directory from /tmp directory.
rmdir( $dir ) or die "Couldn't remove $dir directory, $!";
print "Directory removed successfully\n";

Изменить каталог

Вы можете использовать chdirфункция для смены каталога и перехода в новое место. Вам нужно будет иметь необходимое разрешение, чтобы сменить каталог и перейти в новый каталог.

#!/usr/bin/perl

$dir = "/home";

# This changes perl directory  and moves you inside /home directory.
chdir( $dir ) or die "Couldn't go inside $dir directory, $!";
print "Your new location is $dir\n";