Como faço para criar um diretório e pais diretórios em um comando Perl?
-
20-08-2019 - |
Pergunta
Em Perl, como posso criar um subdiretório e, ao mesmo tempo, criar diretórios pais se eles não existem? Como o comando de UNIX mkdir -p?
Solução
use File::Path qw(make_path);
make_path("path/to/sub/directory");
O mkpath obsoleto e make_path preferido resultou de uma discussão em fio de Perl 5 Porters isso é arquivado aqui .
Em poucas palavras, Perl 5.10 teste apareceu constrangimento na análise argumento da interface makepath (). Por isso, foi substituído por uma versão mais simples, que teve um hash como o argumento final para definir opções para a função.
Outras dicas
Use mkpath do módulo File :: Path:
use File::Path qw(mkpath);
mkpath("path/to/sub/directory");
Por favor, ignore se você está procurando um módulo Perl com a funcionalidade 'mkdir -p', mas o seguinte código funcionaria:
my $dir = '/root/example/dir';
system ("mkdir -p $dir 2> /dev/null") == 0
or die "failed to create $dir. exiting...\n";
Você pode usar um módulo, mas então você tem que instalá-lo em cada servidor que você está indo para a porta o seu código no. Eu normalmente prefiro a função do sistema uso para um trabalho como mkdir porque é uma menor sobrecarga para importação e chamar um módulo quando eu precisar dele apenas uma vez para criar um diretório.
http://perldoc.perl.org/File/Path.html
"A função make_path cria os diretórios dados se eles não existe [sic!] Antes, muito parecido com o mkdir -p
comando Unix"
mkdir () permite criar diretórios em seu script Perl.
Exemplo:
use strict;
use warnings;
my $directory = "tmp";
unless(mkdir($directory, 0755)) {
die "Unable to create $directory\n";
Este programa cria um diretório chamado "tmp" com permissões definidas para 0755 (somente o proprietário tem a permissão de gravação para o diretório; membros do grupo e os outros só pode exibir arquivos e lista o conteúdo do diretório).