$xNeTworKx.: encode_entities verliert Wirkung durch Subroutine ?

Hi,
Ich will Text mit HTML::Entities richtig umwandeln, was auch prima funktioniert. Ich benötige aber den verwandelten Text in 2 weiteren Subroutinen (also ich gebe den Text von Subroutine zu Subroutine). Auf perldoc.com fand ich dieses Schema hier $text = HTML::Entities::encode($text);
Aber in der nächsten Subroutine is die Kodierung schon wieder vergessen worden und ", <,.... werden im Quelltext auch so dargestellt. Natürlich kodiere ich am Anfang der Subroutine den Text wieder erneut, aber warum "merkt" sich Perl die Kodierung nicht, wobei ich doch $text = HTML::Entities::encode($text); verwendet habe ?

$xNeTworKx.

  1. Hi,

    Aber in der nächsten Subroutine is die Kodierung schon wieder vergessen worden

    wie übergibst Du die Daten der Subroutine, wie verwendest Du sie, wie wurden sie definiert/deklariert, gibt es Referenzen, ...

    Sprich: 'N bisschen rumpfartigen Code, bitte.

    Cheatah

    1. Hi,

      Aber in der nächsten Subroutine is die Kodierung schon wieder vergessen worden

      wie übergibst Du die Daten der Subroutine, wie verwendest Du sie, wie wurden sie definiert/deklariert, gibt es Referenzen, ...

      Hmmm, das ist irgendwie ziemlich umfangreich, aber ich versuche mal das Relevante herauszunehmen :

      Ich rufe die Sub "linkverbesserung" auf :

      linkverbesserung($pointer,$changedtext,$text,$thema,$name,$usergrafik,$breite,$hoehe,$email,$hpadresse,$icq);

      -----------------
      Hier ist die Subroutine "linkverbesserung":
      ---------------
      sub linkverbesserung   {
      my ($pointer,$neuertext,$text,$thema,$name,$usergrafik,$breite,$hoehe,$email,$hpadresse,$icq) = @_;

      $thema = HTML::Entities::encode($thema);
      $name = HTML::Entities::encode($name);
      $text = HTML::Entities::encode($text);

      print <<EOF;
           <link rel="stylesheet" type="text/css" href="neuesposting.css">
           <title>xNeTworKx's Bulletin Board V3.0</title>
           </head>
           <body>
           <div>
          <form action="" method="post">
          <table>
          <colgroup>
          <col width="50%">
          <col width="50%">
          </colgroup>
          <tr><td colspan="2" class="mitte">Die Grafiken müssen jetzt funktionieren, aber es wurden nicht anklickbare Links entdeckt !<br>
                                            Klicke auf "zurück" und setze bitte die Links zwischen ein [link] und [/link].<br>
               Bedenke : Links müssen auch als absolute Pfade geschrieben werden (also inkl. http://, ftp://...)</td></tr>
          <tr><td colspan="2" class="postinghintergrund">$neuertext</td></tr>
          <tr><td colspan="2" class="mitte"> Soll das Posting trotzdem abgeschickt werden ? </td></tr>
          <tr><td class="mitte">zurück, Links korrigieren : <input type="radio" name="action" value="korrigieren" checked></td><td class="mitte">Posting trotzdem abschicken : <input type="radio" name="action" value="abschicken"></td></tr>
          <tr><td colspan="2" class="mitte"><input type="hidden" name="pointer" value="$pointer">
                                            <input type="hidden" name="text" value="$text">
               <input type="hidden" name="thema" value="$thema">
               <input type="hidden" name="name" value="$name">
               <input type="hidden" name="usergrafik" value="$usergrafik">
               <input type="hidden" name="breite" value="$breite">
               <input type="hidden" name="hoehe" value="$hoehe">
               <input type="hidden" name="email" value="$email">
               <input type="hidden" name="hpadresse" value="$hpadresse">
               <input type="hidden" name="icq" value="$icq">
               <input type="submit" class="linkbutton" value="senden"></td></tr>
         </table>
         </form>
         </div>
      EOF
      }
      --------------
      Klicke ich jetzt auf "korrigieren" im Formluar, und der Aufruf dieses Teils des CGI Scripts tritt in Kraft, muss ich trotzdem encode_entities nach der Variablenübergabe angeben (siehe unten), weil die Variablen wieder unencoded sind, also im HTML Quelltext wird " und < usw auch so dargestellt. (obwohl ich oben $thema = HTML::Entities::encode($thema); angegeben habe ?)
      ----------------------------------
      if ($query->param('action') eq 'korrigieren')  {
                  my $pointer = $query->param('pointer');
           my $text = $query->param('text');
                  my $thema = $query->param('thema');
                  my $name = $query->param('name');
                  my $usergrafik = $query->param('usergrafik');
           my $breite = $query->param('breite');
                  my $hoehe = $query->param('hoehe');
                  my $email = $query->param('email');
                  my $hpadresse = $query->param('hpadresse');
                  my $icq = $query->param('icq');
           my $error = 0;

      encode_entities($thema);
                  encode_entities($name);
                  encode_entities($text);
      .
      .
      .
      .

      $xNeTworKx.