Kommentarzeichen mittels print ausgeben
Tobias Weisserth
- perl
0 Markus P.0 Tobias Weisserth
0 Patrick
Hallo liebe Perlhelferlein!
Ich möchte das Zeichen "#" mittels print auf dem Bildschirm ausgeben. Reicht es, wenn ich das folgendermaßen mache?:
print "#";
Mein Editor erkennt bei dieser Schreibweise alles hinter dem # als Kommentar. Ich mir deswegen nicht ganz sicher und habe gerade keinen Perlinterpreter, um es auszuprobieren.
Danke für jede brauchbare Antwort!
Gruß,
Tobias
Hallo liebe Perlhelferlein!
Ich möchte das Zeichen "#" mittels print auf dem Bildschirm ausgeben. Reicht es, wenn ich das folgendermaßen mache?:
print "#";
Hi
ganz einfach ,du darfst nicht doppelte " verwenden ,sondern nur ' ,und deswegen da man doppelte " ja nur mit Variablen zusammen verwenden darf (oder so ähnlich)
Ich weiss nicht, ob das funktioniert. Der Editor zumindestens sagt immer noch, dass alles hinter dem "#" Zeichen Kommentar ist.
print '#';
:-(
Gruß,
Tobias
Hallo liebe Perlhelferlein!
Ich möchte das Zeichen "#" mittels print auf dem Bildschirm ausgeben. Reicht es, wenn ich das folgendermaßen mache?:
print "#";
Hi
ganz einfach ,du darfst nicht doppelte " verwenden ,sondern nur ' ,und deswegen da man doppelte " ja nur mit Variablen zusammen verwenden darf (oder so ähnlich)
Ich weiss nicht, ob das funktioniert. Der Editor zumindestens sagt immer noch, dass alles hinter dem "#" Zeichen Kommentar ist.
print '#';
ohne \ ,also print '#'; so MUSS es funktionieren ,wenn dein Editor da wieder etwas hinschreibt würd ich mir rasch einen neuen besorgen (zB CoffeCup HTML Editor (bin zufrieden damit) ).
eigentlich war meine letzte Antwort falsch formuliert ,wenn du print '#; eingibst ,muss er # ausgeben.
Jau! Danke für alle Anworten. Ich fasse zusammen:
print "#"; gibt aus: #
richtig?
Hi,
print "#"; gibt aus: #
richtig?
ja. Auch print '#';
, welches Du bevorzugen solltest, erzeugt die selbe Ausgabe.
Cheatah
Mal ganz allgemein, welche Zeichen kann ich nicht direkt über print ausgeben? Wo muss ich '' voranstellen?
Hat '//' eine besondere Bedeutung?
Gruß,
Tobias
hi!
Mal ganz allgemein, welche Zeichen kann ich nicht direkt über
print ausgeben? Wo muss ich '' voranstellen?
Alle Zeichen, die für Perl sonst eine bestimmte Bedeutung hätten,
also insbesondere $, @, %, " und , müssen in "-String maskiert
werden. In '-Strings müssen nur \ und ' maskiert werden.
Ansonsten probiert man es einfach mal aus und maskiert die Zeichen,
über die der Interpreter meckert.
Hat '//' eine besondere Bedeutung?
Nein, wieso sollte es?
bye, Frank!
Hallo Markus!
Jetzt wollen wir Haare spalten ;-)
wenn du print '#; eingibst ,muss er # ausgeben.
^
Ich glaube, da kommt eine Fehlermeldung, ne? ;-) (Fehlendes ')
Also, ich habe mich hingesetzt und ausprobiert:
print '#'; ergibt #
print '#'; ergigbt #
print "#"; ergibt # aaaaaaber:
print "#"; ergibt auch #
Patrick
Mir ist der Fehler zuerst sogar aufgefallen . Vielleicht wollt ich ihn grad ausbessern und mir is grad was anderes eingefallen ,daß ich wieder drauf vergessen hab .
Hi,
Ich weiss nicht, ob das funktioniert.
aber ich. Das '#' hat innerhalb von Strings nicht die geringste Sonderbedeutung - von "$#array" abgesehen. Du kannst es genauso ausgeben, wie einen Buchstaben.
Der Editor zumindestens sagt immer noch,
Das Syntax-Highlightning des Editors ist suboptimal - und beeindruckt den Perl-Interpreter nicht im geringsten. Du programmierst Perl, nicht Editor.
Hallo liebe Perlhelferlein!
Btw: http://got.to/quote/
Cheatah
Hallo Thomas!
Hallo liebe Perlhelferlein!
Ja, die Betonung liegt auf "helferlein", denn so gut sind meine Kenntnissse auch nicht ;-)
print "#";
Funktioniert zwar, jedoch: Sonderzeichen solltest Du sowieso als deren Entities ausgeben. Der Browser setzt dann das richtige Zeichen ein:
print "#\n";
Patrick
Hallo Patrick,
Ich werde es mal so ausprobieren, mittlerweile denke ich, dass einfach nur der Editor spinnt. Wenn es in der Praxis nicht funktioniert, muss ich noch mal was posten.
Gruß,
Tobias
Hallo Thomas!
Hallo liebe Perlhelferlein!
Ja, die Betonung liegt auf "helferlein", denn so gut sind meine Kenntnissse auch nicht ;-)
print "#";
Funktioniert zwar, jedoch: Sonderzeichen solltest Du sowieso als deren Entities ausgeben. Der Browser setzt dann das richtige Zeichen ein:
print "#\n";
Patrick
hi!
print "#";
Funktioniert zwar, jedoch: Sonderzeichen solltest Du sowieso als
deren Entities ausgeben. Der Browser setzt dann das richtige
Zeichen ein:
Es soll ja auch Perl-Skripts geben, die nicht auf einem Server als
CGI laufen und deren Ausgabe nicht in einem Browser angezeigt wird,
nicht? :)
bye, Frank!
Hallo Frank!
Es soll ja auch Perl-Skripts geben, die nicht auf einem Server als
CGI laufen und deren Ausgabe nicht in einem Browser angezeigt wird,
nicht? :)
Irgendwie hast Du recht, dem Perl-Script ist es egal, was sein lieber Programmierer damit macht. Fuer eine Verwertung im Browser sollten jedoch, meine ich, diese Sachen beruecksichtigt werden...
Patrick
Moin Patrick,
print "#";
Funktioniert zwar, [...]
mehr schlecht als recht allerdings, mit -w gibts ne satte Warnung.
jedoch: Sonderzeichen solltest Du sowieso als deren Entities ausgeben. Der Browser setzt dann das richtige Zeichen ein:
print "#\n";
^ ^ beide raus, weder & noch ; sind fuer Perl Sonderzeichen in Strings.
hmm, und '#' ist auch fuer den Browser kein Sonderzeichen...
also:
print '#'; # fertig ;-)
Viele Gruesse,
n.d.p.
Hi n.d.
print "#";
Funktioniert zwar, [...]
mehr schlecht als recht allerdings, mit -w gibts ne satte Warnung.
Aeh, welche? Ich bekomme keine.
So long
hi!
print "#";
Funktioniert zwar, [...]
mehr schlecht als recht allerdings, mit -w gibts ne satte
Warnung.
Aeh, welche? Ich bekomme keine.
Es gibt auch keine, behaupte ich einfach mal. Soweit ich weiß, darf
ich in Perl-Strings -- und auch in C -- jeder mögliche Zeichen mit
einem \ maskieren, solange es dadurch keine Sonderbedeutung erhält
(wie \n für Newline oder ähnliches).
bye, Frank!
Moin,
print "#";
Funktioniert zwar, [...]
mehr schlecht als recht allerdings, mit -w gibts ne satte
Warnung.
Aeh, welche? Ich bekomme keine.
Es gibt auch keine, behaupte ich einfach mal. Soweit ich weiß, darf
ich in Perl-Strings -- und auch in C -- jeder mögliche Zeichen mit
einem \ maskieren, solange es dadurch keine Sonderbedeutung erhält
(wie \n für Newline oder ähnliches).
hmmmm, ich habe es tatsaechlich nicht ausprobiert, sondern geschlossen. Kann mir das folgende jemand erklaeren?
C:>perl -we "print qq[\g]"
Unrecognized escape \g passed through at -e line 1.
g
C:>perl -we "print qq[#]"
C:>
Viele Gruesse,
n.d.p.
Hi again!
hmmmm, ich habe es tatsaechlich nicht ausprobiert, sondern geschlossen. Kann mir das folgende jemand erklaeren?
C:>perl -we "print qq[\g]"
Unrecognized escape \g passed through at -e line 1.
g
C:>perl -we "print qq[#]"C:>
Nun, gewoehnlich wird durch den \ einem alphanumerischen Zeichen eine Sonderbedeutung gegeben, waehrend bei non-alphanumerics eine eventuelle Sonderbedeutung aufgehoben wird. Z.B.
n: Buchstabe --> \n Zeilenumbruch
*: Im RegExp: bel. viele Zeichen --> \* das Zeichen *
Dabei macht es im zweiten Fall nichts, wenn Zeichen maskiert werden, die eh keine Sonderbedeutung haben (z.B. #). Deshalb setzt ja auch quotemeta() einfach vor jedes [^a-zA-Z0-9_] einfach ein , ohne da weiter zu unterscheiden. Das macht es einfach, fuer saemtliche Sonderzeichen die Bedeutung z.B. in RegExps auszuschalten. Bei Buchstaben sehe ich aber keinen Sinn, einfach global \ davorzusetzen, da man ja nur ganz bestimmte Sonderbedeutungen wuenscht und daher gezielt einschaltet. Deshalb geht Perl wahrscheinlich davon aus, dass man sich verschrieben hat - entweder mit dem \ oder beim Zeichen nach dem \ - und warnt davor. Ausserdem wuerde ich nicht ausschliessen, dass in Zukunft weitere \x-Sequenzen eine Sonderbedeutung erhalten. Das wuerde dann zu Problemen fuehren, waehrend es bei non-alphanumerics nur dann problematisch wird, wenn man *nicht* seit eh und je global escapt.
BTW, auf einer Unix-Shell muesste man zusaetzlich natuerlich noch auf die -Interpretation der Shell achten.
So long