[Cascavel-pm] saber se o arquivo está aberto

Marco A P D'Andrade mdacwb em gmail.com
Quarta Setembro 5 20:56:07 PDT 2007


Ih, já que o Nelson deixou passar, vou sugerir ...

Evite carregar tudo em memoria, parece (e possivelmente é) besteira, mas se
vc não precisa fazer assim, não o faça:

> opendir( DIR, $caminho ) || die "Não pude abrir o diretorio $!\n";


foreach ( readdir(DIR) ) { ... }


>    my $o =  `/sbin/fuser $f`;



E como o Nelson alertou, parece ser o caminho realmente ... uma sugestão
seria:

unless ( chdir($caminho) ) {
   die "Caminho $caminho  inacessivel";
}


Agora, como vc não está usando o caminho absoluto, tudo passa a funcionar
opendir(DIR, ".") || die " ... ";


Mas, seguindo a sugestão glob ... vc dispensa opendir, readdir e closedir
...

foreach ( glob("*.txt") ) { ... }


Outra coisa é o "mv", não use systemcall sem necessidade... use a função
rename!

unless ( rename($source, $target) ) {
   die "Falha ao renomear $source para $target";
}




Sds,
Marco Antonio


Em 04/09/07, Nelson Ferraz <nferraz em gmail.com> escreveu:
>
>
> Em Sep 4, 2007, às 2:29 PM, Flavio Bei escreveu:
>
> > outro problema, sei que deve ser besteira.. mas não achei a solução...
> > alguém tem idéia do que pode ser?
> >
> > eu estava testando o programa rodando na mesma pasta dos arquivos,
> > agora eu to tentando jogar o sistema em uma pasta qualquer e chamar os
> > arquivos, até ai blz, mas não ta funcionando,... não sei o que pode
> > ser, mas ele não acha o caminho....
> >
> > o código é esse:
> >
> > #===============================================
> > use strict;
> > use warnings;
> > my $caminho = '/home/flavio/upload/';
> >
> > opendir( DIR, $caminho ) || die "Não pude abrir o diretorio $!\n";
> > my @files = readdir( DIR );
> > closedir( DIR );
> >
> > foreach( @files ){
> >
> >    my $f =  $_;
> >    if (lc(substr($f, -3,3)) eq "txt"){
> >    my $o =  `/sbin/fuser $f`;
>
> Será que não faltou o caminho antes do nome do arquivo?
>
> foreach my $filename ( @files ) {
>         next if $filename !~ /\.txt$/i; # poderia ter feito um grep antes,
> ou usado um glob
>
>         my $o = `/sbin/fuser $caminho/$filename`;
>
> (A propósito... procure escolher nomes de variáveis melhores, como
> "$filename" ao invés de "$f", e... sei lá o que você estava pensando,
> ao invés de "$o".)
>
> []s
>
> Nelson
>
> _______________________________________________
> Cascavel-pm mailing list
> Cascavel-pm em pm.org
> http://mail.pm.org/mailman/listinfo/cascavel-pm
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: http://mail.pm.org/pipermail/cascavel-pm/attachments/20070906/67a805ad/attachment.html 


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