Bonjour chers membres,
S'il vous plaît, comment créer et ouvrir un fichier Latex à partir d'un Script Perl?
Veuillez bien m'aider !
Bonjour chers membres,
S'il vous plaît, comment créer et ouvrir un fichier Latex à partir d'un Script Perl?
Veuillez bien m'aider !
Bonjour,
tu n'expliques pas ce que cherches à faire et ta question est beaucoup trop vague.
Il existe sur le CPAN un certain nombre de modules Perl dédiés au LaTeX (par exemple https://metacpan.org/pod/distributio...s/latex-encode pour transformer des caractères UTF8 inhabituels en code LaTeX, ou https://metacpan.org/pod/Template::Latex). Fais une recherche avec les mots clefs "cpan" et "latex", tu trouveras peut-être ce que cherches.
Si tu as besoin de plus d'aide, précise ce que tu cherches à faire.
- La programmation fonctionnelle en Perl : 1. Les opérateurs de liste; 2. Les fonctions d'ordre supérieur; 3. Étendre le langage.
- Comment utiliser des décorateurs en Perl: Un tutoriel pour changer le comportement d'une fonction sans en modifier le code source
- De Perl 5 à Perl 6 : 1. Les bases; 2. Les nouveautés; 3. Approfondissements; 4. Annexe 1: Ce qui change entre Perl 5 et Perl 6; Annexe 2: Les nouveautés de Perl 6.
- Les regex et grammaires de Perl 6
- Objets, classes et rôles en Perl 6 - Tutoriel de programmation orientée objet
- Tour d'horizon du nouveau langage Perl 6
Merci cher Moderateur pour votre solution,
En effet, je voulais écrire un script pour créer un fichier tex et ouvrir ensuite.
Voici un exemple de code que je trouve mais cela ne marche pas. Mon objectif est de stocker dans un fichier ".pl".
Pouvez vous apprécier où se trouve mon erreur?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 use strict; use warnings; # Put the file name in a string variable # so we can use it both to open the file # and to refer to in an error message # if needed. my $file = "temp.tex"; # Use the open() function to open the file. unless(open FILE, $file) { # Die with error message # if we can't open it. die "\nUnable to open $file\n"; } # close the file. close FILE;
Bonsoir,
ton code devrait fonctionner, en ce sens qu'il doit ouvrir le fichier temp.tex s'il existe (ou sortir en erreur si le fichier n'existe pas), puis refermer le fichier s'il a pu être ouvert. Mais ton code ne fait rien d'utile dans la mesure où il se contente d'ouvrir le fichier puis de le refermer, sans même lire son contenu ni y écrire de nouveau contenu.
Je ne sais toujours pas vraiment ce que tu cherches à faire.
Quoi qu'il en soit, la syntaxe utilisée pour ouvrir, que tu as sans doute trouvée sur Internet, date d'une bonne vingtaine d'années et n'est plus recommandée aujourd'hui, même si elle continue à fonctionner.
La syntaxe recommandée aujourd'hui pour ouvrir un fichier en lecture est la suivante:
Et pour ouvrir un fichier en mode écriture:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 my $file = "temp.tex"; open my $FILE, "<", $file or die "Unable to open $file $!"; # "<" indique une ouverture en mode lecture; $! contient l'erreur renvoyée par le système d'exploitation en cas d'échec de l'ouverture # Ici ajouter les instructions pour lire le contenu, par exemple, cette boucle de lecture des lignes du fichier: while (my $line = <$FILE>) { # lit le fichier $FILE ligne à ligne print $line; # ici, on se contente d'afficher à l'écran les lignes lues une par une dans le fichier } close $FILE;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 my $file = "temp.tex"; open my $FILE, ">", $file or die "Unable to open $file $!"; # ">" indique une ouverture en mode écriture # Ici ajouter les instructions pour écrire quelque chose dans le fichier, par exemple: print $FILE "Hello world\n"; # ici, on écrit juste une ligne dans le fichier $FILE close $FILE;
- La programmation fonctionnelle en Perl : 1. Les opérateurs de liste; 2. Les fonctions d'ordre supérieur; 3. Étendre le langage.
- Comment utiliser des décorateurs en Perl: Un tutoriel pour changer le comportement d'une fonction sans en modifier le code source
- De Perl 5 à Perl 6 : 1. Les bases; 2. Les nouveautés; 3. Approfondissements; 4. Annexe 1: Ce qui change entre Perl 5 et Perl 6; Annexe 2: Les nouveautés de Perl 6.
- Les regex et grammaires de Perl 6
- Objets, classes et rôles en Perl 6 - Tutoriel de programmation orientée objet
- Tour d'horizon du nouveau langage Perl 6
Merci cher Modérateur pour votre réponse,
En effet, je voulais stocker les résultats d'un fichier .txt dans un fichier Latex. Ainsi, je veux d'abord créer le fichier latex nommé "tablenew.tex", ensuite l'ouvrir avec open. Mon problème est comment créer un fichier Latex inexistant et l'ouvrir ensuite avec open dans la ligne suivante?.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 #!/usr/bin/perl -w open(WRITE,">$tablenew.tex"); open(LOG,"$table.txt"); while ($line=<LOG>) { $line=~s/{smcl}|{com}|{sf}|{ul off}|{res}//g; $line=~s/\& {\\ //g; chop($line); $pos=index($line,">"); if ($pos==1) { $line=~s/> //; print WRITE ("$line"); } else { print WRITE ("\n$line"); } }
Si tu ouvres un fichier en mode écriture, il sera automatiquement créé à vide (et s'il y avait dans le répertoire un fichier portant le même nom, le contenu sera effacé et un nouveau fichier créé à vide).
Je te conseille vraiment d'utiliser la syntaxe que j'ai montrée, elle est plus propre et plus sûre.
Dons de réécrire ton code comme suit:
Un dernier point: le compilateur se moque d'une indentation correcte de ton code, mais l'être humain qui lit le code non. Une bonne indentation n'est pas du tout facultative.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 #!/usr/bin/perl use strict; # aide Perl à t'aider: Perl détectera beaucoup d'erreurs éventuelles use warnings; # aide Perl à t'aider: Perl détectera beaucoup d'erreurs éventuelles my $file_out = "tablenew.tex"; open my $WRITE,">", $file_out or die "Ouverture impossible de $file_out $!"; my $file_in = "table.txt"; open my $LOG,"<", $file_in or die "Ouverture impossible de $file_in $!"; while (my $line = <LOG>) { $line =~ s/{smcl}|{com}|{sf}|{ul off}|{res}//g; # j'ai des doutes sur tes expressions régulières mais ne peux en rien dire sans en connaître précisément le but $line =~ s /\& {\\ //g; # idem sur la regex chomp $line; # parenthèses inutiles $pos = index $line, ">"; # parenthèses inutiles if ($pos == 1) { $line =~ s/> //; print $WRITE "$line"; # probable que tu veuilles en fait "line\n" pour avoir un retour à la ligne } else { print $WRITE "\n$line"; # idem: tu veux sans doute "\n$line\n"; } }![]()
- La programmation fonctionnelle en Perl : 1. Les opérateurs de liste; 2. Les fonctions d'ordre supérieur; 3. Étendre le langage.
- Comment utiliser des décorateurs en Perl: Un tutoriel pour changer le comportement d'une fonction sans en modifier le code source
- De Perl 5 à Perl 6 : 1. Les bases; 2. Les nouveautés; 3. Approfondissements; 4. Annexe 1: Ce qui change entre Perl 5 et Perl 6; Annexe 2: Les nouveautés de Perl 6.
- Les regex et grammaires de Perl 6
- Objets, classes et rôles en Perl 6 - Tutoriel de programmation orientée objet
- Tour d'horizon du nouveau langage Perl 6
Partager