Perl - Répertoires

Voici les fonctions standard utilisées pour jouer avec les répertoires.

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.

Afficher tous les fichiers

Il existe différentes manières de répertorier tous les fichiers disponibles dans un répertoire particulier. Commençons par utiliser le moyen simple d'obtenir et de lister tous les fichiers en utilisant leglob opérateur -

#!/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";
}

Voici un autre exemple, qui ouvre un répertoire et liste tous les fichiers disponibles dans ce répertoire.

#!/usr/bin/perl

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

Un autre exemple pour imprimer la liste des fichiers source C que vous pourriez utiliser est -

#!/usr/bin/perl

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

Créer un nouveau répertoire

Vous pouvez utiliser mkdirfonction pour créer un nouveau répertoire. Vous devrez disposer de l'autorisation requise pour créer un répertoire.

#!/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";

Supprimer un répertoire

Vous pouvez utiliser rmdirfonction pour supprimer un répertoire. Vous devrez disposer de l'autorisation requise pour supprimer un répertoire. De plus, ce répertoire doit être vide avant d'essayer de le supprimer.

#!/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";

Changer un répertoire

Vous pouvez utiliser chdirfonction pour changer de répertoire et accéder à un nouvel emplacement. Vous aurez besoin de l'autorisation requise pour modifier un répertoire et accéder au nouveau répertoire.

#!/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";