2010-05-12 6 views
13

Wie kommentieren ich einen Teil einer einzigen Zeile in Perl, wie die folgende Zeile ein:Wie kann ich nur einen Teil einer Zeile in Perl auskommentieren?

if($clevel==0){#never happends} 

ich, dass letzten schließenden Klammer in der Lage sein möchte, ohne einen Kommentar zu einer neuen Linie zu gehen.

+0

Bitte genau sein: Kopieren und Einfügen in Ihre Frage die Codezeile, mit der Sie arbeiten, und erzählen Welchen Teil möchten Sie selektiv kommentieren? –

+0

Was stimmt nicht mit dem, was Sie haben? Schließst du den Block mit anderem Code? Wenn Sie den Block nicht führen wollen, warum kommentieren Sie das nicht auch? –

+0

Natürlich frage ich das meistens, wie man das im Allgemeinen macht. Diese eine Instanz an sich ist keine große Sache. Aber der Grund ist erhöhte Lesbarkeit. Wenn ich die Zeile auskommentiere, ändert sich die Farbe und es wird auch falsch ausgerichtet mit den anderen if ($ clevel == x) Zeilen. –

Antwort

11

Das # Zeichen beginnt einen Kommentar, der mit dem Ende der Zeile endet.

+0

Ja, ich weiß, aber ich möchte den Kommentar beenden, bevor die Zeile endet. –

+3

@Herrmann Ingjaldsson: es gibt keine Vorkehrung für das .. aber schauen Sie hier für Perl6 Ideen: http://dev.perl.org/perl6/rfc/102.html – lexu

+0

oh gut, Frage beantwortet dann. –

5

A # und dann ein Zeilenumbruch. Sie können sie als Klammer der Art behandeln, da wenig in Perl seine Bedeutung verliert auf verschiedenen Linien aus zu sein.

my $ans = 2 + rand(5) + $pixels/FUDGE_FACTOR; 

Um

my $ans = # 2 + 
    rand(5) + $pixels #/FUDGE_FACTOR 
    ; 

Oder von:

if (dont_know_how_this_breaks() && defined $attribute) { 
    #... 
} 

An:

if (# dont_know_how_this_breaks() && 
    defined $attribute) { 
    #... 
} 
+0

Ja, das stimmt, aber ich möchte etwas schreiben, dann kommentieren und dann wieder schreiben. Alles innerhalb derselben Linie. –

+0

@Hermann Warum teilt die Codezeile in dieser Antwort nicht das, was Sie wollen? –

+0

, weil es erfordert, dass ich die Linie spalte. Ich möchte den Satz direkt nach dem Kommentar fortsetzen. eine kleine Erklärung für ein einzelnes Wort in einem Satz sollte nicht erforderlich, um die Zeile zu brechen. Der Code im Schreiben ist der folgende: if ($ clevel == 0) {# nie passiert} hier wäre es schön, wenn ich diese eine schließende Klammer beenden könnte, ohne zur nächsten Zeile zu gehen. es ist irgendwie nicht notwendig, einen Zeilenumbruch zu machen, wenn man ein [] in ein Zitat steckt. erfordern, dass der Newline-Operator die Lesbarkeit und Kompaktheit verringern kann. Und schließlich, wie zwinge ich eine Newline in einen Kommentar hier? –

7

Wenn es wirklich so wichtig, die Verwendung Quelle Filterung.

# C_Style_Comments.pm 
package C_Style_Comments; 
use Filter::Simple; 
FILTER { s{/\* .* \*/}{}gmx }; 
1; 

$ perl -MC_Style_Comments -e 'print /* 5, No wait, I mean */ 3' 
3 
+0

+1 für Quellfilter. So wie du es hast, sieht es so aus, als könntest du Teile eines Kommentars oder einer Zeichenkette auskommentieren. Cool – Axeman

+10

Quellfilter sind böse. Plötzlich kannst du dem Code vor deinen Augen nicht mehr vertrauen, weil irgendeine unsichtbare Magie an anderer Stelle im Programm sie verändern könnte. Es kann in der Entwicklung nützlich sein, aber im Produktionscode weit davon entfernt bleiben. MEINER BESCHEIDENEN MEINUNG NACH. – Ether

+1

Wie viele böse Dinge gibt es eine Zeit und einen Ort für Quellfilter (diese Frage gehört nicht unbedingt zu diesen Zeiten). Tragen Sie immer Ihre Schutzbrille. – mob

6

Gibt es Gründe, können Sie nicht schreiben:

if($clevel==0){#never happends} 

als:

if($clevel==0){} #never happens 

Es gibt einige Tricks, die Sie Nachrichten ausblendet tun können, um, wie :

0 and 'some comment' 

Aber du wirst es nur verwirrend machen mehr, wenn jemand anderes Ihren Code zu pflegen hat in der Zukunft.

Arbeiten innerhalb der Grenzen einer Sprache, anstatt zu versuchen, sie zu zwingen, wie eine Sprache zu handeln, sind Sie besser vertraut mit oft führt Sie neue Dinge zu lernen. Ich persönlich hasse es, in IDL zu arbeiten, aber einige der Tricks, mit schlechten Loop-Leistungen umzugehen, haben mich dazu gebracht, Code zu optimieren, den ich seither in anderen Sprachen geschrieben habe.

+1

Für eine vollständige Codepflege sollten Sie nicht nur einen "unmöglichen Zustand" kommentieren, sondern Sie sollten auch warnen oder sterben oder eine amüsante Nachricht ausdrucken (weil sich das herumspricht), damit Sie * wissen *, wenn der Code einen von beiden getroffen hat diese "unmöglichen" Linien. – Axeman

+0

@Axeman: Ich bevorzuge es zu vermeiden "sterben" nach dem Debuggen von Code, wo jemand nicht berücksichtigt, wie sich die Dinge in der Zukunft ändern könnten, so dass eine dieser "das sollte nie passieren" -Abschnitte treffen. Aber Sie haben Recht - "warnen", dass dies nie passieren sollte "würde den spezifischen Fall, der gefragt wurde, erfüllen. – Joe

+0

Ah, das ist etwas, was einer meiner Professoren einmal empfohlen hat, um Codeabschnitte zu "kommentieren", wenn sie keinen mehrzeiligen Kommentarmechanismus haben. – Abdul

0

Ein Teil der Linie oder multiplizieren Linie Kommentar in Perl:

=comment 
... 
... 
... 

=cut 
+0

Ich habe diese Syntax für mehrzeiligen Kommentar, aber nicht für Teilzeilenkommentar gesehen. Ich bin mir nicht 100% ig sicher, aber ich glaube, Sie irren sich mit Ihrer Behauptung, dass diese Syntax für einen Teilzeilenkommentar verwendet werden kann. – oyvey

1

eine Zeichenfolge als Inline-Kommentar verwenden:

perl -lne '$a++; q#some explanation#;print;' 

Inline ist notwendig, Kommentierung in Makefiles eingebetteten Perl-Code zu kommentieren (und Bash Skript und Vim-Skripte) wie in diesem vimscript-Aufruf perl .. VIM thesaurus file

Verwandte Themen