Tuesday, 06 de January de 2004
Olá galera, tudo bem?
Como a primeira matéria/dica em CGI-Perl, irei ensinar hoje a como ler diretórios e abrir arquivos nos mesmos.
O código é simples, segue:
opendir (MEUDIR, "/home/LOGIN/www/meudir");
@pegoodir = readdir(MEUDIR);
closedir (MEUDIR);
Explicando o código:
- opendir (MEUDIR, "/home/LOGIN/www/meudir");
- Este código abre o diretório especificado
- @pegoodir = readdir(MEUDIR);
- Neste, coloco todos os arquivos do diretório em um vetor (o @pegoodir é um vetor).
- closedir (MEUDIR);
- Encerro a leitura do diretório
1. Lendo os arquivos do diretório e imprimindo seus dados
Irei utilizar o comando foreach para pegar os nomes dos arquivos no vetor e abrí-los.
A seguir o código e a explicação da utilização parte a parte.
#!/usr/bin/perl
print "Content-type: text/html"; # Digo ao script o conteúdo do documento
# abro o diretório
opendir (MEUDIR, "/home/LOGIN/www/meudir");
@pegoodir = readdir(MEUDIR);
closedir (MEUDIR);
# já peguei todos os dados e armazenei no vetor, fecho o diretório
foreach (@pegoodir) {
$dados = $_; # como só existe uma coluna no vetor, utilizei o $_ para pegar esta coluna.
if ($dados eq ".") { next; } #prossigo se o nome do arquivo for só . (ver explicação abaixo)
if ($dados eq "..") { next; } #prossigo se o nome do arquivo for só ..
open (MEUFILE, "/home/LOGIN/www/meudir/$dados");
@minhas_linhas = ;
close (MEUFILE);
print "Arquivo $dados: @minhas_linhas
"; # imprimo os arquivos do diretório.
} # fecho o foreach
Agora explicando o comando:
if ($dados eq ".") { next; } #prossigo se o nome do arquivo for só .
if ($dados eq "..") { next; } #prossigo se o nome do arquivo for só ..
Um diretório é formado pela seguinte sequencia:
. # este significa a volta a pasta raiz
.. # este volta para a pasta anterior
a # pasta de nome a
b # pasta de nome b
c # pasta de nome c
a.EXT # arquivo a.ext
b.EXT # arquivo b.ext
c.EXT # arquivo c.ext
Utilizei o código porque, sem ele, o script intenderá o dado "." e ".." como arquivos e irá abrí-los, demorando na execução do sistema.
Inserindo este comando next; , pulo para a próxima ação, excluindo a atual.
Bom, por hoje é só.
Até mais galera.
Nenhum comentário, seja o primeiro a comentar.
Para adicionar um comentário você deve efetuar o
login