Как я могу создать каталог, если он не существует с помощью Perl?
В настоящее время мой вывод Perl жестко закодирован для сброса в следующий каталог Unix:
my $stat_dir = "/home/courses/" . **NEED DIR VAR HERE**;
имя файла строится так:
$stat_file = $stat_dir . "/" . $sess.substr($yr, 2, 2) . "_COURSES.csv";
мне нужен аналогичный подход к созданию каталогов Unix, но мне нужно сначала проверить, существуют ли они, прежде чем создавать их.
Как я могу сделать автоматическую нумерацию (ревизии) $stat_file, чтобы, когда эти файлы закачиваются в тот же каталог, они не перезаписываются или не добавляются к существующим файлам в каталог?
4 ответов
использовать -d
оператора File:: Path.
use File::Path qw(make_path);
eval { make_path($dir) };
if ($@) {
print "Couldn't create $dir: $@";
}
make_path
имеет преимущество перед mkdir
в том, что он может создать деревья произвольной глубины.
и использовать -e
чтобы проверить существует файл
my $fileSuffix = 0;
while (-e $filename) {
$filename = $filePrefix . ++$fileSuffix . $fileExtension;
}
эээ... mkdir $stat_dir unless -d $stat_dir
?
это действительно не кажется хорошей идеей вставлять "дополнительные" вопросы.
Perl имеет встроенную функцию mkdir
взгляните на perldoc perlfunc или программу mkdir из Perl Электроинструменты.
Я считаю, что безопасно создать каталог, который уже существует, взгляните на документы.
помните, что каталог -d
существование не значит -w
запись. Но предполагая, что вы находитесь в личной зоне mkdir($dir) unless(-d $dir)
будет работать нормально.