[Cascavel-pm] Criar diretorio/subdiretorio

Patty Silva ptfzs em yahoo.com.br
Terça Maio 8 11:30:29 PDT 2007


Pois é Luis..:D
Fiz assim entao:
como sugeriu o amigo : mkpath("$dir") unless( -d "$dir");
rapido e esta sendo eficiente :D


Obrigada pelas dicas.. ai vem outra perg.. :)
Luis Motta Campos <luismottacampos em yahoo.co.uk> escreveu: On May 8, 2007, at 6:57 PM, Patty Silva wrote:
> Ola Pessoal..
> Estou gerando uns arquivos e quero grava-los em diretorios com o  
> ano mes e dia (algo organizado), estou fazendo:
> ex:
>
> my $date = '20030512';
> my ($year,$month,$day) = $date =~ /^(\d{4})(\d{2})(\d{2})$/;
>
> mkdir $year unless -d $year;
> mkdir "$year/$month" unless -d "$year/$month";
> mkdir "$year/$month/$day" unless -d "$year/$month/$day";
>
> Tem outra maneira?
> Outra coisa... tenho que verificar se ja existe para nao criar de  
> novo..

   Aarrggghh!!
   Patty, depois de tanto tempo, você já deveria saber que tem sempre  
mais de uma maneira... ;-)
   E você tem um talento fantástico para escolher sempre as mais  
feias, deselegantes e desajeitadas...

   Aqui:

   #!perl
   use strict;
   use warnings;
   use DateTime;

   sub create_directory {
       my $path = shift;
       return if -d $path;
       mkdir $path;
   }

   sub create_year_directory {
     my ( $basedir, $path ) = @_;
     return unless $year =~ m{^\d+$};
     my $path = qq{$basedir/$year};
     create_directory( $path );
   }

   sub create_month_directory {
      my ( $basedir, $year, $month ) = @_;
      return unless $month =~ m{^(:?0[0-9]|1[012])$};
      create_year_directory( $basedir, $year );
      my $path = qq{$basedir/$year/$month};
      create_directory( $path );
   }

   sub create_day_directory {
       my ( $basedir, $year, $month, $day ) = @_;
       return unless $day =~ m{^(:?[012]\d|3[01])};
       create_month_directory( $basedir, $year, $month );
       my $path = qq{$basedir/$year/$month/$day};
       create_directory( $path );
   }

   # BASEDIR é o lugar onde você vai construir esta "árvore" de  
diretórios.
   my $basedir = '/opt/data';

   # Crie datas facilmente com o DateTime:
   my $today = DateTime->now( time_zone => 'America/Sao_Paulo' )- 
 >truncate( to => 'day' );
   # Construa seus diretórios facilmente com uma única chamada:
   create_day_directory $basedir, $today->year, $today->month, $today- 
 >day;

   É tudo. Não testei!
   Putamplexos!
--
Luis Motta Campos (a.k.a. Monsieur Champs) is a software engineer,
Perl fanatic evangelist, and amateur {cook, photographer}



_______________________________________________
Cascavel-pm mailing list
Cascavel-pm em pm.org
http://mail.pm.org/mailman/listinfo/cascavel-pm


 __________________________________________________
Fale com seus amigos  de graça com o novo Yahoo! Messenger 
http://br.messenger.yahoo.com/ 
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: http://mail.pm.org/pipermail/cascavel-pm/attachments/20070508/99d7f2c3/attachment.html 


Mais detalhes sobre a lista de discussão Cascavel-pm