Encore un exemple, avec un petit editeur de console
Mais ces exemples sont très vieux, il dates de mes débuts il y a 10 ans.
L'excercice commenté exo_commente.html est beaucoup plus complet
et commenté, mot par mot et ligne par ligne, donc plus instructif.
Voilà vous voulez votre propre éditeur facile rapide qui s'ouvre instantanement sur
la console pour pouvoir saisir ce que vous voyez, et bien il suffit de déclarer
(@mon_editeur = <STDIN>;) en gros c'est tout.
Mais en rajoutant quelques fonctionnalitées
on peux faire un petit menu:
nouveau, ouvrir, sauvegarder
on peut aussi sauver le travail par défaut dans un fichier style note_du_date.log , etc ...
#!/usr/bin/perl -w
# remd: Mon editeur alEd avec un menu. (ce programme tourne bien)
# alain adelmar Juillet 2002
$dt = localtime(time);
# les différantes variables ***************
$x = "x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x\n";
$bienvenu = "$x$dt\tx*x\n$x\nBienvenu sur l'éditeur aled\n
editeur alain A_d_e_l_m_a_r\nTaper Ctr-D pour sortir\n\n$x\n\n";
$prompt = "Entrer votre choix: nouveau(0), ouvrir(1), sauvegarder(2)\nou
continuez(Enter)...\n";
# initialisé à
$choix = 3;
$travail = 0;
&choix;
sub choix {
while($choix ne "")
{ # affiche un prompt en boucle
print("$prompt");
$choix = <STDIN>;
chop($choix);
if($choix eq "0")
{
&nouveau;
}
if($choix eq "1")
{
&ouvrir;
}
elsif($choix eq "2")
{
&sauv;
}
}
}
print "$x";
print "désirez vous sortir maintenant:\n";
$resp = <STDIN>;
chomp $resp;
if ($resp =~ /^o|y/i) {
print "$x";
die "merci, à tchao...\n$x\n";
}
else {
if ($travail >=1) {
&choix;
}
else {
&nouveau;
}
}
sub nouveau {
print $bienvenu;
$travail++;
@contenu = <STDIN>;
print "n'oublier pas de sauver votre travail qui par defaut
sera sauvegarder sur votre repertoire avec pour nom 'edition_date_du_jour.log'\n";
$filetmp = "trav_" . "$dt" . "\.log";
open FTMP, ">$filetmp" or die "Ouverture impossible $!";
print FTMP @contenu;
close FTMP or die "fermeture a l'os gros_caca $!";
}
sub ouvrir {
print "Quel fichier désirez vous ouvrir:\n";
$filename = <STDIN>;
chomp $filename;
until (-e $filename) {
print "veuillez enrer un nom de fichier correct,
(svp)\n";
$filename = <STDIN>;
chomp $filename;
}
open FO, "$filename" or die "Ouverture impossible $!";
@contenu = <FO>;
close FO or die "fermeture impossible $!";
# voir si il est possible de directement ecrire print <STDOUT>
@contenu
foreach $ligne(@contenu) {
print $ligne;
}
print "\n";
print $bienvenu;
@nwcontenu = <STDIN>;
print "n'oublier pas de sauver votre travail\nqui par defaut
sera sauvegarder\nsur votre repertoire avec pour nom:\n'edition_date_du_jour.log'\n";
$dt = localtime(time);$dico1 = $dico;
$filetmp = "trav_" . "$dt" . "\.log";
$ligne_vierge = "\n\n";
push @contenu, $ligne_vierge;
push @contenu, "@nwcontenu";
open FTMP, ">$filetmp" or die "Ouverture impossible $!";
print FTMP @contenu;
close FTMP or die "fermeture a l'os gros_caca $!";
}
sub sauv {
print "entrez le nom de votre travail\n";
$filename = <STDIN>;
chomp $filename;
# controler si un fichier n'a pas le meme nom
if (-e $filename) {
$dt = localtime(time);
($file, $ext)= split(/./, $filename);
$new_filename = "$file" . "_$dt" . "\.$ext";
print "Votre travail sera sauvegarder sous $new_filename\n";
open(F, ">$new_filename") or die "Ouverture
impossible $!";
print F @contenu;
close F || die "fermeture impossible $!";
}
else {
open(F, ">$filename") or die "Ouverture impossible
$!";
print F @contenu;
close F || die "fermeture impossible $!";
}
}
# Ce petit programme est une petite mérveille
# alain Adelmar, 14 Aout 2001, aadelmar@wanadoo.fr
exec '/usr/bin/clear';
# remet une page blanche au shell.