Учебники

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, чтобы изменить каталог и перейти на новое место. Вам нужно будет иметь необходимое разрешение, чтобы изменить каталог и зайти в новый каталог.