OVH Cloud OVH Cloud

Commentaires intra-ligne

5 réponses
Avatar
Thibault
Salut,

J'aurais souhaité savoir si certains savaient si c'etait possible, et si
oui comment mettre des commentaires en perl, au milieu d'une ligne de code :
Ex:
my $r = 1; /* pokpok */ $r++;
Avec evidemment une syntaxe perl
Car avec les #, ca commente jusqu'a la fin de la ligne
et avec les =cut, ca commente que si le =cut est au debut de la ligne

Ca parait con comme ca, mais ca me serait d'un grand secours pour
concatener du code perl avec quand meme des commentaires ...

Merci d'avance
A+
--
Thibault

5 réponses

Avatar
Denis Joiret
Bonjour,

Un truc comme :
my $r = 1; qw/* pokpok */; $r++;
fonctionne parfaitement. Il doit toutefois y avoir un ";" derrière "*/"

Denis

"Thibault" a écrit dans le message de
news:c8dglf$c7i$
Salut,

J'aurais souhaité savoir si certains savaient si c'etait possible, et si
oui comment mettre des commentaires en perl, au milieu d'une ligne de code
:

Ex:
my $r = 1; /* pokpok */ $r++;
Avec evidemment une syntaxe perl
Car avec les #, ca commente jusqu'a la fin de la ligne
et avec les =cut, ca commente que si le =cut est au debut de la ligne

Ca parait con comme ca, mais ca me serait d'un grand secours pour
concatener du code perl avec quand meme des commentaires ...

Merci d'avance
A+
--
Thibault



Avatar
Paul GABORIT
À (at) Wed, 19 May 2004 14:25:21 +0200,
"Denis Joiret" écrivait (wrote):
Un truc comme :
my $r = 1; qw/* pokpok */; $r++;
fonctionne parfaitement. Il doit toutefois y avoir un ";" derrière "*/"


Ça fonctionne uniquement entre deux instructions... et s'il n'y a pas de '/'
dans le commentaire lui-même.

Ça produit beaucoup de warning (autant que de mots) si on utilise l'option
'-w' ou 'use warnings;' :
Useless use of a constant in void context at ...

Si en plus on place des '#' dans le commentaire, on a droit à :
Possible attempt to put comments in qw() list at...

Dans le genre de trucs idiot qu'on peut faire, il y a aussi l'option '-P' de
perl :

#define COMMENT(a)


$a = 1 + COMMENT(/* dfjg jsdfg dfg */) + 3;
print "$an";

Ça marche alors n'importe où sauf là où le préprocesseur n'accepte pas les
macro-commandes. Il ne faut pas que le commentaire contienne de ')' mal
balancée. Il faut aussi lire les limitations annoncées dans 'perlrun'
concernant //.

En conclusion, c'est fortement déconseillé. Soit on met des commentaires et on
prend la place de les mettre correctement. Soit on met tout sur une seule
ligne et je ne vois pas l'intérêt de mettre des commentaires puisque ça
restera illisible.

--
Paul Gaborit - <http://www.enstimac.fr/~gaborit/>
Perl en français - <http://www.enstimac.fr/Perl/>

Avatar
jeanpierre.vidal
Thibault wrote in message news:<c8dglf$c7i$...
Salut,

J'aurais souhaité savoir si certains savaient si c'etait possible, et si
oui comment mettre des commentaires en perl, au milieu d'une ligne de code :
Ex:
my $r = 1; /* pokpok */ $r++;
Avec evidemment une syntaxe perl
Car avec les #, ca commente jusqu'a la fin de la ligne
et avec les =cut, ca commente que si le =cut est au debut de la ligne

Ca parait con comme ca, mais ca me serait d'un grand secours pour
concatener du code perl avec quand meme des commentaires ...

Merci d'avance
A+


Autant que je sache, la réponse est non.
perldoc perlsyn :
"Perl est, en majeure partie, un langage à syntaxe libre (La seule
exception en est les déclarations de format, pour des raisons
évidentes). Le texte situé entre un caractère "#" et la fin de la
ligne est un commentaire, et est ignoré. Si vous essayez d'utiliser
"/* */" pour des commentaires dans le style du C, ce sera interprété
soit comme une division, soit comme un pattern matching, en fonction
du contexte, et les commentaires "//" du C++ auront juste l'air d'une
expression régulière nulle, alors ne faites pas cela."

De plus, l'écriture
my $r = 1; # pokpok
$r++;
me semble plus claire (mais les goûts et les couleurs...)

Jean-Pierre

Avatar
Benoit Izac
Bonjour,

le 19/05/2004 à 18:16, Jean-Pierre Vidal a écrit
dans le message :

De plus, l'écriture
my $r = 1; # pokpok
$r++;
me semble plus claire (mais les goûts et les couleurs...)


C'est vrai, moi j'écrirais :
my $r = 2; # pokpok

--
Benoit Izac

Avatar
jl_morel
Dans l'article <c8dglf$c7i$,
com a dit...

J'aurais souhaité savoir si certains savaient si c'etait possible, et si
oui comment mettre des commentaires en perl, au milieu d'une ligne de code :
Ex:
my $r = 1; /* pokpok */ $r++;
Avec evidemment une syntaxe perl
Car avec les #, ca commente jusqu'a la fin de la ligne
et avec les =cut, ca commente que si le =cut est au debut de la ligne

Ca parait con comme ca, mais ca me serait d'un grand secours pour
concatener du code perl avec quand meme des commentaires ...




On peut tout faire avec Perl ;-)

On peut utiliser un filtre de source qui retire tous les commentaires à la
C avant que le script ne soit compilé.

Par exemple le filtre 'CommentFilter.pm' suivant, à mettre dans le
répertoire de votre script :

#!/usr/bin/perl -w
use strict;
package CommentFilter;
use Filter::Simple;

FILTER {
s{/*.*?*/}{}gs; # très imparfait !
};

1;
__END__

Dans votre script vous ajoutez simplement un use CommentFilter;
et le tour est joué. Par exemple :

#!/usr/bin/perl -w
use CommentFilter;
use strict;

my $r = 1; /* un commentaire à la c.. :-) */ $r++;

print /* et encore un autre */ $r;

__END__

Attention, le filtre ne fait pas de détail : il supprime tout ce qui est
entre /* et */ même s'il s'agit d'une partie d'une instruction Perl. Donc
méfiance. Pour pouvez supprimer l'action du filtre où vous voulez avec un
no CommentFilter;

Voir la doc de Filter::Simple
http://cpan.uwinnipeg.ca/dist/Filter-Simple

Vous pouvez aussi utilisez d'autres délimiteurs que /* et */, comme par
exemple les caractères § ou µ qu'on obtient facilement sur un clavier
français.

HTH

--
J-L.M.