1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
|
#! /usr/bin/env perl
#
# Explorateur de fichier
use strict;
use warnings;
print "Content-Type: text/html\n\n";
my $courant;
# si variable get existe alors le répertoire courant est le contenu de la varible d'environnement QUERY_STRING
if(my $get = $ENV{"QUERY_STRING"}){
my @pairs = split /=/, $get;
$courant .= '/'.$pairs[1];
}else{ # sinon le répertoire courant est la racine
$courant = "/";
}
# ouverture d'un fichier pour stocker la variable $courant
open(FILE, ">>url_du_fichier") or die("Erreur d'ouverture de fichier");
print FILE $courant;
close(FILE);
# ouverture du même fichier pour récupérer ce qui a été écrit
open(FILE, "<url_du_fichier") or die("Erreur d'ouverture de fichier");
while(<FILE>){
$courant = $_; # on récupère le chemin
}
close(FILE);
print '<p>Repertoire Courant : '.$courant.'</p>' , "\n";
opendir(my $fd, $courant) or die("Impossible d'ouvrir le répertoire");
my @entrees = grep { !/^\.\.$/ } readdir($fd); # lecture du répertoire et filtre des .. et .
@entrees = grep { !/^\.$/ } @entrees;
@entrees = sort @entrees; # tri dans l'ordre
# lecture et affichage des liens vers les répertoires
foreach my $v (@entrees){
if(-d "$courant/$v"){
print '<a href="/cgi-bin/explorateur.pl?fic='.$v.'">', "d $v</a><br>\n";
}elsif(-l "$courant/$v"){
print '<a href="#">' , "l $v</a><br>\n";
}else{
print '<a href="#">' , "- $v</a><br>\n";
}
}
closedir($fd); |