Perl - Directories
Following are the
standard functions used to play with directories.
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.
Display all the files
There are various
ways to list down all the files available in a particular directory. First
let's use the simples way to get and list down all the files using glob operator:
#!/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";
}
Here is another
example which opens a directory and list out all the files available inside
this directory.
#!/usr/bin/perl
opendir (DIR, '.') or die "Couldn't open directory,
$!";
while ($file = readdir DIR) {
print "$file\n";
}
closedir DIR;
One more example to
print the list of C source files, you might use
#!/usr/bin/perl
opendir(DIR, '.') or die "Couldn't open directory,
$!";
foreach (sort grep(/^.*\.c$/,readdir(DIR))){
print "$_\n";
}
closedir DIR;
Create new directory
You can use mkdir function
to create a new directory. You will need to have required permission to create
a directory.
#!/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";
Remove a directory
You can use rmdir function
to remove a directory. You will need to have required permission to remove a
directory additionally this directory should be empty before you try to remove
it.
#!/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";
Change a directory
You can use chdir function
to change a directory and go to new location. You will need to have required
permission to change a directory and go inside the new directory.
#!/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";
Comments
Post a Comment