[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