I would recommend to avoid chdir(). This can cause Problems when you are not aware of going back.
Example:
You have this structure:
Code:
./script.pl
./test.dat
./t/dir1/
./t/dir2/
./t/dir3/
And you use this code:
Code:
chdir('./t') or die "$!";
opendir(DIR,'.') or die "$!";
my @folders = grep { -d } readdir(DIR);
close DIR;
print "$_\n" for sort {lc$a cmp lc$b} @folders;
#[...] some more code, maybe 200 lines of code
open(FILEHANDLE,"<./test.dat") or die $!;
my @lines = <FILEHANDLE>;
close FILEHANDLE;
This won't work because you are in ./t and there is no test.dat
So I would recommend to use this:
Code:
opendir(DIR,'./t') or die "$!";
my @folders = grep { -d } readdir(DIR);
close DIR;
print "$_\n" for sort {lc$a cmp lc$b} @folders;
And even better to use
...
Code:
use FindBin ();
my $dir = $FindBin::Bin . '/t';
opendir(DIR,$dir) or die "$!";
my @folders = grep { -d } readdir(DIR);
close DIR;
print "$_\n" for sort {lc$a cmp lc$b} @folders;