format STDOUT_TOP =
Page @ <<
$%
Fichiers
Fichiers Fichiers
================= ================= =================
.
$x = 'x*' x 28;
$lblf = "\n";
$html = $silence = $update = 0;
$f;
#------------------------traitation des argumentures
if (@ARGV == 0) {
print "\n$x\nUsage: CompFile [Option] [nom_du_répértoire]\nPar
defaut exécute le mode verbeux sans mise à jour\npensez y
la prochaine fois.\n";
$argv = 0;
}
elsif (@ARGV == 1) {
if ($ARGV[0] =~ /^-/) {
@optarg = split(//,$ARGV[0]);
if ($optarg[1] eq "s") {
$silence = 1;
}
if ($optarg[1] eq "u") {
print "a savoir l\'option -u ne
peut être employé avec l\'option -s (silencieux) étant
son contraire (silencieux = pas de date ni de nom de fichier entre deux
copies\n";
$update++;
}
}
else {
if ($ARGV[0] =~ /^\"|\"$/) {
s/^\"()\"$/$1/;
$rep = $1;
print $rep;
&verif($rep);
}
elsif ($ARGV[0] =~ /^\/\w/) {
$rep = $1;
&verif($rep);
}
else { die "Erreur: Usage CompFile.pl [Option]
[Argument]\nVeuillez entrer le nom_du_repertoire (complet)\n ou simplement\nCompFile.pl
(qui est la commande par defaut)\n" }
}
}
else {
if ($ARGV[0] =~ /^-/) {
@optarg = split(//,$ARGV[0]);
if ($optarg[1] eq "s") {
$silence = 1;
}
if ($optarg[1] eq "u") {
print "a savoir l\'option -u ne
peut être employé avec l\'option -s (silencieux) étant
son contraire (silencieux = pas de date ni de nom de fichier entre deux
copies\n";
$update++;
}
}
else { die "Erreur: l\'option -s ou u doit ce placer avant
le nom_du_repertoire\n" }
if ($ARGV[1] =~ /^\"|\"$/) {
s/^\"()\"$/$1/;
$rep = $1;
print $rep;
&verif($rep);
}
elsif ($ARGV[1] =~ /^\/\w/) {
$rep = $1;
&verif($rep);
}
else { die "Erreur: Usage CompFile.pl [Option] [Argument]\nVeuillez
entrer le nom_du_repertoire (complet)\n ou simplement\nCompFile.pl (qui
est la commande par defaut)\n" }
}
print "\n$x\nCe logiciel sert à regrouper le contenu de plusieurs\nfichiers
dans un seul et meme fichier\n\tconçu par alain Adelmar \<mailto:aadelmar\@wanadoo.fr\>\np.s:Il
ne detruira les originaux que si vous lui demander\n$x\n";
&quel_rep;
&verif($rep);
sub faitvoir_comment {
opendir REP, "$rep" or die "ouverture de $rep impossible
$!";
@fac = (sort readdir REP);
foreach $f(@fac) {
# sur trois colonnes
if ($u <= 2) {
push @row, $f;
$u++;
}
else {
write;
$u = 0;
for $i(0..2) {
delete $row[$i];
}
}
}
print "\n$x\n";
print "\nQuel modele voulez-vous regrouper:exemple: ^trav
(partie commune commencant par trav)\nou\nlog\$ (finissant par log\n";
#ici il est possible de decrire <avant, >aprés,
_dedans
$model = <STDIN>;
chomp $model;
print "Créer le nom complet du superfichier qui regroupera
tout les contenus\n";
$receptacle = <STDIN>;
chomp $receptacle;
if ($model=~ /html$/i) {
$html++;
foreach $f(@fac) {
if ($f =~ /$model/i) {
&ad_path;
push @a_detruire, $f;
open F, "$f" or die "ouverture de $f impossible $!";
@contenu = <F>;
close F || die "fermeture de $f impossible $!";
foreach $l(@contenu) {
if ($firstpage == 0) {
if ($l =~ /<\/html\>/i) {
$firstpage++;
}
else {
push @contenu, $l;
}
}
else {
if ($header == 0) {
if ($l =~ /<body\>/i) {
$header++;
&ad2file($lblf);
$l = $l . "$lblf";
push @contenu, $l;
}
}
else {
if ($l =~ /<\/html\>/i)
{
$header = 0;
$l = "<br\>\n<br\>\n<hr\>\n";
push @contenu, $l;
}
else {
push @contenu, $l;
}
}
}
}
}
}
}
else {
foreach $f(@fac) {
if ($f =~ /$model/i) {
&ad_path;
push @a_detruire, $f;
open F, "$f" or die "ouverture de $f impossible $!";
@contenu = <F>;
close F || die "fermeture de $f impossible $!";
&ad2file($lblf);
unshift @contenu, $lblf;
push @autre_contenu, @contenu;
}
}
}
open FC, ">$receptacle" or die "Ouverture impossible de $receptacle damened $!";
if ($firstpage >= 1) {
$ls = "<\/html\>\n";
push @contenu, $ls;
print FC "@contenu";
}
else {
print FC "@autre_contenu";
}
close FC || die "Fermeture du fichier de recap impossible
$!";
print "ok tout a ete fait sur les fichier:\n";
my $u = 0;
foreach $f(@a_detruire) {
# sur trois colonnes
if ($u <= 2) {
push @row, $f;
$u++;
}
else {
write;
$u = 0;
for $i(0..2) {
delete $row[$i];
}
}
}
print "\n$x\nvoulez vous les détruire maintenant?";
$response = <STDIN>;
chomp $response;
if ($response =~ /^o|y/i) {
unlink @a_detruire or die "impossible de détruire
les fichiers $!";
&menu;
}
# on efface rien
else {
print "ok je laisse le tout tel-quel\n";
&menu;
}
}
sub ad2file($lblf) {
if ($silence == 0) {
# si le mode silencieux n'est pas activé
if ($html == 0) {
# si c'est pas du html
@st = stat($f);
$dst = localtime($st[9]);
$lblf="\nfichier $f du $dst" . '====>'
. "\n";
}
else {
# si c'est du html
@st = stat($f);
$dst = localtime($st[9]);
$lblf="\n<hr\>\n<br\>fichier
$f du $dst" . '====>' . "\n<br\>";
}
}
else {
# en mode silencieux
print "En mode silencieux: Il ne sera ajouté\nen
fin de fichier qu\'un retour à la ligne\n";
}
}
sub quel_rep {
print "Entrez le nom du repertoire à traiter:\n";
$rep = <STDIN>;
chomp $rep;
print "\n$x\n";
}
sub verif($rep) {
while (!(-e $rep)) {
print "fare toi encouler granda connasse your
PATH de merde is no really good\ntchao pov con!\n\nentrez un nom de repertoire
correct, au moins";
$rep = <STDIN>;
chomp $rep;
}
&faitvoir_comment;
}
sub menu {
print "voulez vous poursuivre avec ce script:\n";
$response = <STDIN>;
chomp $response;
if ($response =~ /^y|o/i) {
&quel_rep ;
}
# that's all folk
if ($update >= 1) {
# voir si possible de trier par la date avec
system(ls -t) pour ne pas s'enmerder aprés
print "updater le fichier $receptacle pas encore
écrit\n";
}
else { die "ok doc, that all folck, tchao\n\n" }
}
sub ad_path {
if ($rep=~ /\/$/) {
$f = "$rep" . "$f";
}
else {
$f = "$rep" . "\/$f";
}
}
format STDOUT =
@<<<<<<<<<<<<<<<<<
@<<<<<<<<<<<<<<<<< @<<<<<<<<<<<<<<<<<
$row[0], $row[1], $row[2]
.
END;