[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