<< retour aux chapitres du tuto
Le fichier texte à passer en majuscule doit s'appeler fic_in.txt
le fichier résultat s'appelle fic_out.txt
les 3 fichiers passer_en_maj.bat, passer_en_maj.pl et fic_in.txt doivent se trouver dans le même répertoire
fichier passer_en_maj.bat |
c:\perl\bin\perl.exe -w passer_en_maj.pl <fic_in.txt >fic_out.txt |
fichier passer_en_maj.pl |
map({tr/[a-z]/[A-Z]/; print;} (<>)); |
reste à double-cliquer sur passer_en_maj.bat
Eventuellement utile pour le debuggage mais surtout comme tutorial
fichier No.pl |
###################
EDITION DES LIGNES AVEC LE NUMERO ################### # =============================================================== # CONSTANTES $fic = "no.pl"; # fichier source $ecart = 10; # on affiche 10 lignes avant et 10 lignes apres # la ligne demandee # ============================================================== # MAIN open (IN,$fic) || die "\n\nimpossible d'ouvrir le fichier specifie : $fic\n\n"; @IN = <IN>; close IN; $invite = "\n\n\n --------------------------------------------------------------------- | | | saisissez le no de ligne du fichier a afficher | | | | saisissez n'importe quelle lettre pour quitter | | | --------------------------------------------------------------------- "; print $invite; # on attend que soit saisi sur la console un ou plusieurs chiffres while(defined($noLig = <>) && ($noLig =~ /[0-9]+/)) { chomp $noLig; # suppr de la touche 'entree' apres la saisie des chiffres print " --------"; for ($i = $noLig-$ecart; $i < $noLig+$ecart; $i++) # pour chaque ligne comprise entre le no de ligne saisi moins l'ecart # et le no de ligne saisi plus l'ecart { $aff = sprintf("%- 4d", $i); # formatage de la marge affichant le no de ligne $out = !$IN[$i-1] ? "\n" : $IN[$i-1]; chomp $out; if ($i == $noLig) { print "\n |$aff>>| $out"; } elsif ($i-1 >= 0) { print "\n |$aff | $out"; } } print " | | --------"; print $invite; } |
Vous avez une liste de pages
html
dans un répertoire et vous voudriez créer un
index (style
navigateur avec les liens à gauche)
la page principale s'appelle "index.html"
la page generée s'appelle "_indexGenere.html"
on utilise les frames pour
éviter de fermer la page à
chaque
fois(sinon ya plus grand interêt)
la page principale est séparée en 2 frame :
fichier index.html |
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <title>INDEX</title> <!-- une frame sur 2 colonnes, celle de gauche fait 200 pixels de large --> <frameset border="0" cols=200,*> <!-- la frame de gauche s'appelle menu et affiche _indexGenere.html --> <frame name="menu" src="./_indexGenere.html" /> <!-- la frame de droite s'appelle data et n'affiche rien pour l'instant --> <frame name="data" /> </frameset> </head> </html> |
fichier genererLiens.bat |
rem on recupere
les noms de
fichiers voulus : html, htm, php et on stocke le resultat dans le
fichier res.txt dir /A:-D /B *.htm* >res.txt dir /A:-D /B *.php >>res.txt rem le script perl recoit en entree le fichier res.txt et genere en sortie le fichier _indexGenere.html c:\perl\bin\perl.exe -w generLiens.pl < res.txt >_indexGenere.html del res.txt |
fichier genererLiens.pl |
# en une seule
ligne !!! # on ecrit : # - le debut de la page html # pour chaque element de <> c'est a dire pour chaque ligne du fichier en entree # - on cree le lien # la reference est le nom du fichier dont on a supprime le retour chariot # la target est 'data' (nom de la frame de droite) # le nom du lien reprend le nom de la page sans l'extension # - la fin de la page html print ("<html><body>", map("<a href='${\(s/\n//,$_)}' target='data'>${\(s/(\.htm[l]?)?|(\.php)?$//g,$_)}</a><br />\n",<>), "</body></html>"); |
fichier generer_index_jpg.bat |
perl
-w
generer_index_jpg.pl pause |
fichier generer_index_jpg.pl |
#-------------------------------------------------------------------------------- # COURT RESUME DU TRUC # on boucle sur chq image du reperoire # generation du code html de l'image dans le buffer # si no photo en cours est multiple du nbr de photos par page # -> ecriture du buffer ds fichier # fin boucle # si le dernier no de photo n'est pas multiple du nbr de photos par page # -> ecriture du buffer ds fichier : derniere page #-------------------------------------------------------------------------------- # CONSTANTES A SAISIR $CHEMIN_REPERTOIRE = "."; # ne pas modifier $NBR_COL_PHOTO = 3; # nombre de photos par colonne par page $NBR_LIG_PHOTO = 3; # nombre de photos par ligne par page $NOM_PAGE_WEB = "index"; # racine du nom des pages generees $NOM_EXTENSION_PAGE = ".html"; # extension du nom des pages generees #-------------------------------------------------------------------------------- # CONSTANTES $DEBUT = ("<html><body>\n"); $scriptjs = " <script language='javascript'> <!-- function aff(pho){ wndw =\"\"; wndw = window.open(\"\",\"\","; $scriptjs .= "\"alwaysRaised=1,dependent=1,hotkeys=0,location=0,"; $scriptjs .= "menubar=0,status=0,titlebar=0,toolbar=0\"); wndw.document.writeln(\"<html><body> <img src='\"+ pho + \"'></body></html>\"); } --> </script>\n"; $tabdeb = ("<table>\n"); $tabfin = ("\n</table>\n"); $FIN = ("\n</body></html>"); $coldeb = "<td style=\"border-style:solid;border-width:1px\">\n"; $colfin = "</td>\n"; $ligdeb = "<tr>\n<td style=\"border-style:solid;border-width:1px\">\n"; $ligfin = "</td>\n</tr>\n"; #-------------------------------------------------------------------------------- # INITIALISATION DES VARIABLES $out = ""; # buffer $noPhoto = 0; # photo en cours $noPage = 1; # page en cours $nbrMaxPhoto = $NBR_COL_PHOTO * $NBR_LIG_PHOTO; #-------------------------------------------------------------------------------- # MAIN # contenu du repertoire dans la liste @LIST opendir(DIR,$CHEMIN_REPERTOIRE); @LIST = readdir DIR; closedir DIR; # fichiers de @LIST se terminant par '.jpg' dans la liste @jpg @jpg = grep(/\.jpg$/i,@LIST); # fichiers de @LIST se terminant par '.gif' dans la liste @gif @gif = grep(/\.gif$/i,@LIST); # fichiers de @LIST se terminant par '.png' dans la liste @png @png = grep(/\.png$/i,@LIST); @imgs = (@jpg,@gif,@png); # recuperation du nombre d'elements de la liste @imgs dans $nbTot $nbTot = @imgs; # pour chaque element de @imgs (<=> chaque fichier image) foreach $img(@imgs) { # traitement cas changement de ligne $deb = $coldeb; $deb = $ligdeb if($noPhoto % $NBR_COL_PHOTO == 0); $noPhoto++; $fin = $colfin; $fin = $ligfin if($noPhoto % $NBR_COL_PHOTO == 0); # ajout au buffer de la ligne de l'image en cours $out .= $deb ."<table><tr><td><a href='#' onClick='javascript:aff(\"$img\");'><img src='$img' width='128' height='96'></td></tr><tr><td>$img</td></tr></table>\n".$fin; # cas nouvelle page html : traitement des liens page suivante et precedente if($noPhoto % $nbrMaxPhoto == 0) { $pr = $noPage - 1; $su = $noPage + 1; $lienP = ""; $lienP = "<a href='".$NOM_PAGE_WEB. $pr . $NOM_EXTENSION_PAGE. "'>prev</a>" if($pr > 0); if($noPhoto == $nbTot) { $lienS = ""; } else { $lienS = "<a href=\'".$NOM_PAGE_WEB. $su . $NOM_EXTENSION_PAGE ."'>next</a>" ; } # ecriture dans le fichier resultat open (OUT, ">". $NOM_PAGE_WEB.$noPage.$NOM_EXTENSION_PAGE); print OUT $DEBUT.$scriptjs.$lienP.$tabdeb.$out.$tabfin.$lienS.$FIN; close OUT; $out = ""; # RAZ du buffer $noPage++; # inc du no de page } } # trt de la derniere page if($noPhoto % $nbrMaxPhoto != 0) { $pr = $noPage - 1; $lienP = ""; $lienP = "<a href='".$NOM_PAGE_WEB. $pr . $NOM_EXTENSION_PAGE ."'>prev</a>" if($pr > 0); # ecriture dans le fichier resultat open (OUT, ">". $NOM_PAGE_WEB.$noPage.$NOM_EXTENSION_PAGE); print OUT $DEBUT.$scriptjs.$lienP.$tabdeb.$out.$tabfin.$FIN; close OUT; } |
<< retour aux chapitres du tuto