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?

Foi útil?

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).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top