Невозможно создать каталог с помощью make_path

#perl

#perl

Вопрос:

Я пытался создать каталог и подкаталог внутри него с помощью Perl. Вот код:

   #!/usr/bin/perl
  use strict;
  use warnings;
  use Cwd qw(abs_path);
  use File::Path qw(make_path remove_tree);
  my $path = abs_path();
  my @create = make_path($path , '/test/data' , {
                                                  verbose => 1,
                                                  mode => 0777,
                                                })
               or die "failed to create directory /test/data $!";
  

Он показывает следующую ошибку:-

     failed to create directory /test/data  at ./perl_project.pl line 7
  

Что я делаю не так?

Комментарии:

1. Совет: my $path = abs_path(); можно упростить с помощью my $path = ".";

2. Совет: my $path = "."; make_path($path . '/test/data', ...); можно упростить до make_path('test/data', ...);

Ответ №1:

Если вы хотите создать путь /test/data в своем текущем каталоге, измените:

  my @create = make_path($path , '/test/data' , {
  

Для:

  my @create = make_path($path . '/test/data' , {
 #                            ^
  

Поскольку вы использовали запятую в make_path, ваш код пытается создать 2 каталога: один в текущем каталоге ( $path ), а другой в абсолютном пути /test/data .