chdir $file;
chdir $dir;
Can you explain the purpose of that?
ISTM that your code has too many statments. Here's an SSCCE
#!/usr/bin/env perl
use strict;
use warnings;
use Test::More tests => 3;
# Do all this in /tmp because we don't want permission trouble or to
# pollute real dirs while testing
chdir '/tmp';
my $dir = 'VEHICLES';
my @files = qw/CARS BIKES/;
mkdir $dir;
ok (-d $dir);
chdir $dir;
foreach my $subdir (@files) {
mkdir $subdir;
ok (-d $subdir);
}
Running gives:
$ ./ex.pl
1..3
ok 1
ok 2
ok 3
$ tree VEHICLES/
VEHICLES/
├── BIKES
└── CARS
2 directories, 0 files
$