Toutes mes citations sont séparées en fichiers individuels. Une version de ma page ouaibe sans citation sert de gabarit à ce script qui cherche dans celle-ci un mot clé qui repère où doit être insérée la citation. Avant de faire la substitution mot clé/citation, il faut la choisir aléatoirement. Tous les titres sont lus dans une liste (où les titres préférés sont répétés plusieurs fois). Le choix du titre se fait en choisissant au hasard un élément de la liste. La lecture de la citation est alors faite et la substitution effectuée. Dans le listing qui suit, une ligne débutant par un # est un commentaire (que j'ai l'habitude d'écrire en anglais).
Ah ah! Un peu sèche ma prose, hein? C'est le computer geek qui parle! 8^)
#!/usr/local/bin/perl
$repQuotes = "/usagers/lutzray/WWW/MesMiens/Page_9e_bit/Pensees";
$prefFile = "/usagers/lutzray/WWW/MesMiens/Page_9e_bit/PenseesPref";
$pageTemplate = "/usagers/lutzray/WWW/MesMiens/Page_9e_bit/template.html";
$finalpage = "/usagers/lutzray/WWW/MesMiens/Page_9e_bit/index.html";
$token = 'here_citation';
#
# make a list @titles of quotes listed in $repQuotes directory and
# duplicate prefered quote names according to $prefFile content
# (to make their choice more likely)
#
@titles = `/bin/ls -1 $repQuotes`;
@prefs = eval('('.`tr ' \012' ',,' < $prefFile`.')');
for ($i = $#prefs; $i > 0; $i -= 2)
{
$title = $prefs[$i-1];
$repetition = $prefs[$i];
for (;--$repetition;)
{
push @titles,$title.'.rtf'."\n"; # add this title $repetition - 1 times
#print "$title $repetition\n";
}
}
#
# pick a random quote in @titles, read it from filesystem and
# put it in @aQuote
#
srand;
$aNumber = int rand($#titles + 1);
$aRandomTitle = $repQuotes."/".$titles[$aNumber];
#$aRandomTitle = $repQuotes."/Aider.rtf";
print("Choix: ", $aRandomTitle, "\n");
open(QUOTEFILE, "$aRandomTitle" );
@aQuote = ;
close(QUOTEFILE);
#
# read template and substitutes $token by @aQuote
# write the finale page and make it ISO-Latin
#
open(INFILE, "$pageTemplate");
open(OUTFILE, ">$finalpage");
while()
{
if(/$token/)
{
print OUTFILE @aQuote;
}
else
{
print OUTFILE;
}
}
close(INFILE);
close(OUTFILE);
`/usr/local/bin/recode next:l1 $finalpage`;
<maison>