Pregunta

En Perl, ¿cómo puedo crear un subdirectorio y, al mismo tiempo, crear directorios principales si no existen? ¿Te gusta el comando mkdir -p de UNIX?

¿Fue útil?

Solución

use File::Path qw(make_path);
make_path("path/to/sub/directory");

El mkpath en desuso y el make_path preferido surgieron de una discusión en el hilo de Perl 5 Porters que está archivado aquí .

En pocas palabras, la prueba de Perl 5.10 resultó incómoda en el análisis de argumentos de la interfaz makepath (). Por lo tanto, se reemplazó con una versión más simple que tomó un hash como argumento final para establecer opciones para la función.

Otros consejos

Use mkpath del módulo File :: Path:

use File::Path qw(mkpath);
mkpath("path/to/sub/directory");

Por favor ignore si está buscando un módulo Perl con la funcionalidad 'mkdir -p' pero el siguiente código funcionaría:

my $dir = '/root/example/dir';

system ("mkdir -p $dir 2> /dev/null") == 0 
    or die "failed to create $dir. exiting...\n";

Puede usar un módulo pero luego debe instalarlo en cada servidor en el que va a portar su código. Por lo general, prefiero usar la función del sistema para un trabajo como mkdir porque es una carga menor para importar y llamar a un módulo cuando lo necesito solo una vez para crear un directorio.

ref http://perldoc.perl.org/File/Path.html

" La función make_path crea los directorios dados si no existen [sic!] antes, al igual que el comando Unix mkdir -p "

mkdir () le permite crear directorios en su script Perl.

Ejemplo:

use strict;
use warnings;

my $directory = "tmp";

unless(mkdir($directory, 0755)) {
        die "Unable to create $directory\n";

Este programa crea un directorio llamado " tmp " con permisos establecidos en 0755 (solo el propietario tiene permiso para escribir en el directorio; los miembros del grupo y otros solo pueden ver archivos y enumerar el contenido del directorio).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top