Tobias Weisserth: Kommentarzeichen mittels print ausgeben

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

  1. 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)

    1. 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)

      1. 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) ).

        1. eigentlich war meine letzte Antwort falsch formuliert ,wenn du print '#; eingibst ,muss er # ausgeben.

          1. Jau! Danke für alle Anworten. Ich fasse zusammen:

            print "#"; gibt aus: #

            richtig?

            1. Hi,

              print "#"; gibt aus: #
              richtig?

              ja. Auch print '#';, welches Du bevorzugen solltest, erzeugt die selbe Ausgabe.

              Cheatah

            2. Mal ganz allgemein, welche Zeichen kann ich nicht direkt über print ausgeben? Wo muss ich '' voranstellen?

              Hat '//' eine besondere Bedeutung?

              Gruß,
              Tobias

              1. 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!

          2. 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

            1. 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 .

      2. 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

  2. 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

    1. 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

    2. 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!

      1. 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

    3. 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.

      1. Hi n.d.

        print "#";
        Funktioniert zwar, [...]
        mehr schlecht als recht allerdings, mit -w gibts ne satte Warnung.

        Aeh, welche? Ich bekomme keine.

        So long

        1. 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!

          1. 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.

            1. 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