Re: Re: Re: Re: Re: Re: Re: Re: Re: Wie Unterprogramm mit SUB aufrufen - baseportal Forum - Web-Anwendungen einfach, schnell, leistungsfähig!
baseportal
English - Deutsch "Es gibt keine dummen Fragen - jeder hat einmal angefangen"

 baseportal-ForumDie aktuellsten 10, 30, 50, 100 Einträge anzeigen.  

 
 Ausgewählter Eintrag: Zur Liste 
    Beitrag von Helmut Meisl (119 Beiträge) am Montag, 29.Februar.2016, 17:44.
    Re: Re: Re: Re: Re: Re: Re: Re: Re: Wie Unterprogramm mit SUB aufrufen

      RICHARD sei Dank!

      Ich kann den Fehler jetzt - hinterher ist man immer schlauer - ganz einfach benennen.

      Der Aufruf der Subroutine und die Subroutine selbst müssen (!) innerhalb des gleichen Perl-Aufrufs sein.
      Ich hatte die Subroutine in einem separaten Perl-Bereich.
      Muss man wissen ...


    Antworten

 Alle Einträge zum Thema: Zur Liste 
    Beitrag von Helmut Meisl (119 Beiträge) am Sonntag, 28.Februar.2016, 17:43.
    Wie Unterprogramm mit SUB aufrufen

      Ich habe ein Unterprogramm "lineal", das ich mehrfach aufrufen möchte. Kann mir jemand die Syntax mitteilen, wie ich das richtig mache. Nachstehend das einfache Unterprogramm .

      ----

      <perl>
      sub lineal{
      <table border=0 cellspacing=1 cellpadding=0><tr>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>10&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>20&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>30&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>40&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>50&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>60&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>70&nbsp;</font></td>
      </tr>
      </table>
      }
      </perl>
      

      ...

     Antworten

    Beitrag von Sander (8133 Beiträge) am Sonntag, 28.Februar.2016, 21:31.
    Re: Wie Unterprogramm mit SUB aufrufen

      <perl>
      

      &lineal(); #überall wo es erscheinen soll

      sub lineal{
      out <<EOF;
      <table border=0 cellspacing=1 cellpadding=0><tr>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>10&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>20&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>30&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>40&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>50&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>60&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>70&nbsp;</font></td>
      </tr>
      </table>
      EOF
      }
      </perl>
      

     Antworten

    Beitrag von Helmut Meisl (119 Beiträge) am Montag, 29.Februar.2016, 09:17.
    Re: Wie Unterprogramm mit SUB aufrufen

      Hallo, Sander!
      Vorerst mal Danke!
      Leider geht mein Script dennoch nicht.
      Was mache ich falsch?

      -----

      <perl>
      

      $HAG0 = $multi * 70 + 6;
      $TE = $multi * 10;
      

      out "<table border=0 cellspacing=1 cellpadding=0><tr>
      <td width=100 bgcolor=#CCCCCC align=right><font face=Arial size=2>DATUM&nbsp;</font></td>
      <td width=$HAG0 bgcolor=#CCCCCC align=left><font face=Arial size=2>HEIZUNG kWh&nbsp;</font></td>
      </tr></table>
      <table border=0 cellspacing=1 cellpadding=0><tr>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>10&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>20&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>30&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>40&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>50&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>60&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>70&nbsp;</font></td>
      </tr>
      </table>
      

      <table border=0 cellspacing=1 cellpadding=0><tr>
      <td width=100 bgcolor=#CCCCCC align=right><font face=Arial size=2>$DT1&nbsp;</font></td>
      <td width=$HAG1 bgcolor=#FE642E ></td>
      <td width=20 bgcolor=white align=right><font face=Arial size=2>$HA1&nbsp;</font></td>
      </tr>
      </table>
      

      &lineal();

      <table border=0 cellspacing=1 cellpadding=0><tr>
      <td width=100 bgcolor=#CCCCCC align=right><font face=Arial size=2>$DT2&nbsp;</font></td>
      <td width=$HAG2 bgcolor=#FE642E ></td>
      <td width=20 bgcolor=white align=right><font face=Arial size=2>$HA2&nbsp;</font></td>
      </tr>
      </table>
      

      &lineal();

      <table border=0 cellspacing=1 cellpadding=0><tr>
      <td width=100 bgcolor=#CCCCCC align=right><font face=Arial size=2>$DT3&nbsp;</font></td>
      <td width=$HAG3 bgcolor=#FE642E ></td>
      <td width=20 bgcolor=white align=right><font face=Arial size=2>$HA3&nbsp;</font></td>
      </tr>
      </table>
      

      &lineal();

      <table border=0 cellspacing=1 cellpadding=0><tr>
      <td width=100 bgcolor=#CCCCCC align=right><font face=Arial size=2>$DT4&nbsp;</font></td>
      <td width=$HAG4 bgcolor=#FE642E ></td>
      <td width=20 bgcolor=white align=right><font face=Arial size=2>$HA4&nbsp;</font></td>
      </tr>
      </table>
      

      &lineal();

      <table border=0 cellspacing=1 cellpadding=0><tr>
      <td width=100 bgcolor=#CCCCCC align=right><font face=Arial size=2>$DT5&nbsp;</font></td>
      <td width=$HAG5 bgcolor=#FE642E ></td>
      <td width=20 bgcolor=white align=right><font face=Arial size=2>$HA5&nbsp;</font></td>
      </tr>
      </table>
      

      <table border=0 cellspacing=1 cellpadding=0><tr>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>10&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>20&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>30&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>40&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>50&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>60&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>70&nbsp;</font></td>
      </tr>
      </table>
      

      ";
      </perl>
      sub lineal
      {
      <table border=0 cellspacing=1 cellpadding=0><tr>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>10&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>20&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>30&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>40&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>50&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>60&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>70&nbsp;</font></td>
      </tr>
      </table>
      }
      

     Antworten

    Beitrag von richard (1187 Beiträge) am Montag, 29.Februar.2016, 10:06. WWW: posaunenchor-rhoden.de
    Re: Wie Unterprogramm mit SUB aufrufen

      Bin zwar nicht Sander ...

      Du mußt die Subroutine unter Perl aufrufen - nicht innerhalb eines out-Blocks.

      Außerdem in der Routine "out <<EOF;" und "EOF" ergänzen, so wie Sander das schon gezeigt hatte.

      Die Subroutine selbst muß natürlich auch innerhalb eines Perl-Blocks definiert werden.

      "return" statt "return;"

      Das, sollte schonmal funktionieren:



      <perl>
      $HAG0 = $multi * 70 + 6;
      

      $TE = $multi * 10;


      out "<table border=0 cellspacing=1 cellpadding=0><tr><td width=100 bgcolor=#CCCCCC align=right><font face=Arial size=2>DATUM&nbsp;</font></td><td width=$HAG0 bgcolor=#CCCCCC align=left><font face=Arial size=2>HEIZUNG kWh&nbsp;</font></td>
      </tr></table>
      
      ";
      &lineal();
      out "
      <table border=0 cellspacing=1 cellpadding=0><tr>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>10&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>20&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>30&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>40&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>50&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>60&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>70&nbsp;</font></td>
      </tr>
      </table>
      <table border=0 cellspacing=1 cellpadding=0><tr>
      

      <td width=100 bgcolor=#CCCCCC align=right><font face=Arial size=2>$DT1&nbsp;</font></td>
      <td width=$HAG1 bgcolor=#FE642E ></td>
      <td width=20 bgcolor=white align=right><font face=Arial size=2>$HA1&nbsp;</font></td>
      </tr>
      </table>
      <table border=0 cellspacing=1 cellpadding=0><tr>
      <td width=100 bgcolor=#CCCCCC align=right><font face=Arial size=2>$DT2&nbsp;</font></td>
      <td width=$HAG2 bgcolor=#FE642E ></td>
      <td width=20 bgcolor=white align=right><font face=Arial size=2>$HA2&nbsp;</font></td>
      </tr>
      </table>
      <table border=0 cellspacing=1 cellpadding=0><tr>
      

      <td width=100 bgcolor=#CCCCCC align=right><font face=Arial size=2>$DT3&nbsp;</font></td>
      <td width=$HAG3 bgcolor=#FE642E ></td>
      <td width=20 bgcolor=white align=right><font face=Arial size=2>$HA3&nbsp;</font></td>
      </tr>
      </table>
      <table border=0 cellspacing=1 cellpadding=0><tr>
      

      <td width=100 bgcolor=#CCCCCC align=right><font face=Arial size=2>$DT4&nbsp;</font></td>
      <td width=$HAG4 bgcolor=#FE642E ></td>
      <td width=20 bgcolor=white align=right><font face=Arial size=2>$HA4&nbsp;</font></td>
      </tr>
      </table>
      <table border=0 cellspacing=1 cellpadding=0><tr>
      

      <td width=100 bgcolor=#CCCCCC align=right><font face=Arial size=2>$DT5&nbsp;</font></td>
      <td width=$HAG5 bgcolor=#FE642E ></td>
      <td width=20 bgcolor=white align=right><font face=Arial size=2>$HA5&nbsp;</font></td>
      </tr>
      </table>
      <table border=0 cellspacing=1 cellpadding=0><tr>
      

      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>10&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>20&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>30&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>40&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>50&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>60&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>70&nbsp;</font></td>
      </tr>
      </table>
      



      ";


      sub lineal
      {
      out <<EOF;
      <table border=0 cellspacing=1 cellpadding=0><tr>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>10&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>20&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>30&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>40&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>50&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>60&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>70&nbsp;</font></td>
      </tr>
      </table>;
      EOF
      return
      }
      </perl>
      

     Antworten

    Beitrag von richard (1187 Beiträge) am Montag, 29.Februar.2016, 10:12. WWW: posaunenchor-rhoden.de
    Re: Wie Unterprogramm mit SUB aufrufen

      Sorry, doch "return;"

      In der Subroutine ist aber am Ende der Tabelle jetzt ein Semikolon zuviel.

     Antworten

    Beitrag von Helmut Meisl (119 Beiträge) am Montag, 29.Februar.2016, 10:18.
    Re: Re: Wie Unterprogramm mit SUB aufrufen

      Danke Richard!
      Leider hab ich irgendwo noch immer einen winzigen "Fisch", sodass ich eine Fehlermeldung bekomme.
      Ich mach den Aufruf jetzt ausserhalb des "out" und das Unterprogramm wird auch erreicht.
      Allerdings endet es mit einer Fehlermeldung.
      Bitte daher nochmals um Hilfe!

      ---

      sub lineal
      out <<EOF;
      {
      out "
      <table border=0 cellspacing=1 cellpadding=0><tr>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>10&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>20&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>30&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>40&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>50&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>60&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>70&nbsp;</font></td>
      </tr>
      </table>";
      EOF
      return;
      }
      


      ---

     Antworten

    Beitrag von richard (1187 Beiträge) am Montag, 29.Februar.2016, 10:31. WWW: posaunenchor-rhoden.de
    Re: Re: Wie Unterprogramm mit SUB aufrufen

      Das "out <<EOF;" muß nach der geschweiften Klammer stehen:

      sub lineal
      {
      out <<EOF;
      <table border=0 cellspacing=1 cellpadding=0><tr>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>10&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>20&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>30&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>40&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>50&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>60&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>70&nbsp;</font></td>
      </tr>
      </table>
      EOF
      return;
      }
      

     Antworten

    Beitrag von Helmut Meisl (119 Beiträge) am Montag, 29.Februar.2016, 10:42.
    Re: Re: Re: Wie Unterprogramm mit SUB aufrufen

      SORRY, aber ich glaub ich bin blind ...

      Habe den Code entsprechend angepasst.
      Da ich nicht mehr innerhalb des "out" das Sub aufrufe, muss ich wohl im Sub das "out" für die Tabelle ergänzen und mit den Anführungsstrichen auch wieder beenden?
      BITTE nochmals drüber schauen und DANKE!!!

      -----


      sub lineal
      {
      out <<EOF;
      out "
      <table border=0 cellspacing=1 cellpadding=0><tr>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>10&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>20&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>30&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>40&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>50&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>60&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>70&nbsp;</font></td>
      </tr>
      </table>";
      EOF
      return;
      }
      

     Antworten

    Beitrag von richard (1187 Beiträge) am Montag, 29.Februar.2016, 10:47. WWW: posaunenchor-rhoden.de
    Re: Re: Re: Wie Unterprogramm mit SUB aufrufen

      Nein. Das machste doch schon mit dem EOF.

      Nimm mal exakt den meinen Code von 10:31 (der geht) und schreib was dabei rauskommt.

     Antworten

    Beitrag von Helmut Meisl (119 Beiträge) am Montag, 29.Februar.2016, 10:51.
    Re: Re: Re: Re: Wie Unterprogramm mit SUB aufrufen

      ... habe genau 1:1 den Code übernommen.
      Nach dem Aufruf des Sub kommt folgende Fehermeldung:


      [ Fehler: Fehlerhafter Perl Code in /meisl.info/E2016_Kopie:
      Undefined subroutine &main::lineal called at (eval 89429) line 31. ]

     Antworten

    Beitrag von richard (1187 Beiträge) am Montag, 29.Februar.2016, 10:57. WWW: posaunenchor-rhoden.de
    Re: Re: Re: Re: Wie Unterprogramm mit SUB aufrufen

      Hast Du die Subroutine auch innerhalb eines <perl></perl>-Blocks?

      Im Post von 09:17 war das nicht der Fall und das würde auch die Fehlermeldung erklären.

     Antworten

    Beitrag von Helmut Meisl (119 Beiträge) am Montag, 29.Februar.2016, 11:00.
    Re: Re: Re: Re: Re: Wie Unterprogramm mit SUB aufrufen

      ... ja, sollte schon so korrekt sein.

      ----


      <perl>
      

      $HAG0 = $multi * 70 + 6;
      $TE = $multi * 10;
      

      out "<table border=0 cellspacing=1 cellpadding=0><tr>
      <td width=100 bgcolor=#CCCCCC align=right><font face=Arial size=2>DATUM&nbsp;</font></td>
      <td width=$HAG0 bgcolor=#CCCCCC align=left><font face=Arial size=2>HEIZUNG kWh&nbsp;</font></td>
      </tr></table>
      <table border=0 cellspacing=1 cellpadding=0><tr>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>10&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>20&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>30&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>40&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>50&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>60&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>70&nbsp;</font></td>
      </tr>
      </table>
      

      <table border=0 cellspacing=1 cellpadding=0><tr>
      <td width=100 bgcolor=#CCCCCC align=right><font face=Arial size=2>$DT1&nbsp;</font></td>
      <td width=$HAG1 bgcolor=#FE642E ></td>
      <td width=20 bgcolor=white align=right><font face=Arial size=2>$HA1&nbsp;</font></td>
      </tr>
      </table>";
      

      lineal();


      out "
      <table border=0 cellspacing=1 cellpadding=0><tr>
      <td width=100 bgcolor=#CCCCCC align=right><font face=Arial size=2>$DT2&nbsp;</font></td>
      <td width=$HAG2 bgcolor=#FE642E ></td>
      <td width=20 bgcolor=white align=right><font face=Arial size=2>$HA2&nbsp;</font></td>
      </tr>
      </table>
      

      <table border=0 cellspacing=1 cellpadding=0><tr>
      <td width=100 bgcolor=#CCCCCC align=right><font face=Arial size=2>$DT3&nbsp;</font></td>
      <td width=$HAG3 bgcolor=#FE642E ></td>
      <td width=20 bgcolor=white align=right><font face=Arial size=2>$HA3&nbsp;</font></td>
      </tr>
      </table>
      

      <table border=0 cellspacing=1 cellpadding=0><tr>
      <td width=100 bgcolor=#CCCCCC align=right><font face=Arial size=2>$DT4&nbsp;</font></td>
      <td width=$HAG4 bgcolor=#FE642E ></td>
      <td width=20 bgcolor=white align=right><font face=Arial size=2>$HA4&nbsp;</font></td>
      </tr>
      </table>
      

      <table border=0 cellspacing=1 cellpadding=0><tr>
      <td width=100 bgcolor=#CCCCCC align=right><font face=Arial size=2>$DT5&nbsp;</font></td>
      <td width=$HAG5 bgcolor=#FE642E ></td>
      <td width=20 bgcolor=white align=right><font face=Arial size=2>$HA5&nbsp;</font></td>
      </tr>
      </table>
      

      <table border=0 cellspacing=1 cellpadding=0><tr>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>10&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>20&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>30&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>40&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>50&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>60&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>70&nbsp;</font></td>
      </tr>
      </table>
      


      ";

      </perl>
      

      ----

     Antworten

    Beitrag von richard (1187 Beiträge) am Montag, 29.Februar.2016, 11:10. WWW: posaunenchor-rhoden.de
    Re: Re: Re: Re: Re: Wie Unterprogramm mit SUB aufrufen

      Und wo ist da die Subroutine?

      Ich habe jetzt Deinen eben geposteten Code genommen, mein Stück von 10:31 unten dran getan und das funktioniert hier in kostnix. Und zwar genau so:

      <perl>
      

      $HAG0 = $multi * 70 + 6;

      $TE = $multi * 10;
      out "<table border=0 cellspacing=1 cellpadding=0><tr>
      

      <td width=100 bgcolor=#CCCCCC align=right><font face=Arial size=2>DATUM&nbsp;</font></td>
      <td width=$HAG0 bgcolor=#CCCCCC align=left><font face=Arial size=2>HEIZUNG kWh&nbsp;</font></td>
      </tr></table>
      <table border=0 cellspacing=1 cellpadding=0><tr>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>10&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>20&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>30&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>40&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>50&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>60&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>70&nbsp;</font></td>
      </tr>
      </table>
      <table border=0 cellspacing=1 cellpadding=0><tr>
      

      <td width=100 bgcolor=#CCCCCC align=right><font face=Arial size=2>$DT1&nbsp;</font></td>
      <td width=$HAG1 bgcolor=#FE642E ></td>
      <td width=20 bgcolor=white align=right><font face=Arial size=2>$HA1&nbsp;</font></td>
      </tr>
      </table>";
      


      lineal();


      out "
      <table border=0 cellspacing=1 cellpadding=0><tr>
      <td width=100 bgcolor=#CCCCCC align=right><font face=Arial size=2>$DT2&nbsp;</font></td>
      <td width=$HAG2 bgcolor=#FE642E ></td>
      <td width=20 bgcolor=white align=right><font face=Arial size=2>$HA2&nbsp;</font></td>
      </tr>
      </table>
      <table border=0 cellspacing=1 cellpadding=0><tr>
      

      <td width=100 bgcolor=#CCCCCC align=right><font face=Arial size=2>$DT3&nbsp;</font></td>
      <td width=$HAG3 bgcolor=#FE642E ></td>
      <td width=20 bgcolor=white align=right><font face=Arial size=2>$HA3&nbsp;</font></td>
      </tr>
      </table>
      <table border=0 cellspacing=1 cellpadding=0><tr>
      

      <td width=100 bgcolor=#CCCCCC align=right><font face=Arial size=2>$DT4&nbsp;</font></td>
      <td width=$HAG4 bgcolor=#FE642E ></td>
      <td width=20 bgcolor=white align=right><font face=Arial size=2>$HA4&nbsp;</font></td>
      </tr>
      </table>
      <table border=0 cellspacing=1 cellpadding=0><tr>
      

      <td width=100 bgcolor=#CCCCCC align=right><font face=Arial size=2>$DT5&nbsp;</font></td>
      <td width=$HAG5 bgcolor=#FE642E ></td>
      <td width=20 bgcolor=white align=right><font face=Arial size=2>$HA5&nbsp;</font></td>
      </tr>
      </table>
      <table border=0 cellspacing=1 cellpadding=0><tr>
      

      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>10&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>20&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>30&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>40&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>50&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>60&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>70&nbsp;</font></td>
      </tr>
      </table>
      



      ";

      sub lineal
      {
      out <<EOF;
      <table border=0 cellspacing=1 cellpadding=0><tr>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>10&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>20&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>30&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>40&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>50&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>60&nbsp;</font></td>
      <td width=$TE bgcolor=#CCCCCC align=right><font face=Arial size=1>70&nbsp;</font></td>
      </tr>
      </table>
      EOF
      return;
      }
      

      </perl>

     Antworten

    Beitrag von Helmut Meisl (119 Beiträge) am Montag, 29.Februar.2016, 11:13.
    Re: Re: Re: Re: Re: Re: Wie Unterprogramm mit SUB aufrufen

      ... hab genau das gleiche gemacht, und da geht der Code auch.
      Da muss ich wohl noch nach irgend einem Zeichen suchen, das dort nicht hingehört.

      Jedenfalls VIELEN DANK für die Geduld!

     Antworten

    Beitrag von richard (1187 Beiträge) am Montag, 29.Februar.2016, 11:20. WWW: posaunenchor-rhoden.de
    Re: Re: Re: Re: Re: Re: Wie Unterprogramm mit SUB aufrufen

      So schlimm wars nicht.

      Bist Du es denn jetzt zufrieden oder müssen wir noch weiter suchen?

     Antworten

    Beitrag von Helmut Meisl (119 Beiträge) am Montag, 29.Februar.2016, 11:21.
    Re: Re: Re: Re: Re: Re: Re: Wie Unterprogramm mit SUB aufrufen

      ... ich such mal weiter nach irgend welchen versteckten Steuerzeichen.

     Antworten

    Beitrag von Helmut Meisl (119 Beiträge) am Montag, 29.Februar.2016, 16:56.
    Re: Re: Re: Re: Re: Re: Re: Re: Wie Unterprogramm mit SUB aufrufen

      Ich komm nicht wirklich weiter. Da muss ich einen Syntax-Fehler haben.
      Ich habe ein ganz einfaches Testtemplate gemacht.
      Auch damit bekomme ich folgende Fehlermeldung:

      test start
      [ Fehler: Fehlerhafter Perl Code in /meisl.info/testsub:
      Undefined subroutine &main::lineal called at (eval 17) line 4. ]
      sub lineal { out <   10  20  30  40  50  60  70  EOF return; }
      

      Nachstehend das (fehlerhafte) Template:


      <perl>
      out "test start";
      
      lineal();
      out "test ende";
      </perl>
      

      sub lineal
      {
      out <<EOF;
      <table border=0 cellspacing=1 cellpadding=0><tr>
      <td width=150 bgcolor=#CCCCCC align=right><font face=Arial size=1>&nbsp;</font></td>
      <td width=150 bgcolor=#CCCCCC align=right><font face=Arial size=1>10&nbsp;</font></td>
      <td width=150 bgcolor=#CCCCCC align=right><font face=Arial size=1>20&nbsp;</font></td>
      <td width=150 bgcolor=#CCCCCC align=right><font face=Arial size=1>30&nbsp;</font></td>
      <td width=150 bgcolor=#CCCCCC align=right><font face=Arial size=1>40&nbsp;</font></td>
      <td width=150 bgcolor=#CCCCCC align=right><font face=Arial size=1>50&nbsp;</font></td>
      <td width=150 bgcolor=#CCCCCC align=right><font face=Arial size=1>60&nbsp;</font></td>
      <td width=150 bgcolor=#CCCCCC align=right><font face=Arial size=1>70&nbsp;</font></td>
      </tr>
      </table>
      EOF
      return;
      }
      

     Antworten

    Beitrag von richard (1187 Beiträge) am Montag, 29.Februar.2016, 17:28. WWW: posaunenchor-rhoden.de
    Re: Re: Re: Re: Re: Re: Re: Re: Wie Unterprogramm mit SUB aufrufen

      Die Definition der Subroutine ist Perl-Code und muß deshablb in einen Perl-Block. Ich habe den </perl> deshalb mal verschoben - und es funktioniert:


      <perl>
      out "test start";
      
      lineal();
      out "test ende";


      sub lineal
      {
      out <<EOF;
      <table border=0 cellspacing=1 cellpadding=0><tr>
      <td width=150 bgcolor=#CCCCCC align=right><font face=Arial size=1>&nbsp;</font></td>
      <td width=150 bgcolor=#CCCCCC align=right><font face=Arial size=1>10&nbsp;</font></td>
      <td width=150 bgcolor=#CCCCCC align=right><font face=Arial size=1>20&nbsp;</font></td>
      <td width=150 bgcolor=#CCCCCC align=right><font face=Arial size=1>30&nbsp;</font></td>
      <td width=150 bgcolor=#CCCCCC align=right><font face=Arial size=1>40&nbsp;</font></td>
      <td width=150 bgcolor=#CCCCCC align=right><font face=Arial size=1>50&nbsp;</font></td>
      <td width=150 bgcolor=#CCCCCC align=right><font face=Arial size=1>60&nbsp;</font></td>
      <td width=150 bgcolor=#CCCCCC align=right><font face=Arial size=1>70&nbsp;</font></td>
      </tr>
      </table>
      EOF
      return;
      }
      </perl>
      

      Die Funktion "return" macht zur Zeit übrigens keinen erkennbaren Sinn. Das kannste auch weglassen.

     Antworten

    Beitrag von Helmut Meisl (119 Beiträge) am Montag, 29.Februar.2016, 17:44.
    Re: Re: Re: Re: Re: Re: Re: Re: Re: Wie Unterprogramm mit SUB aufrufen

      RICHARD sei Dank!

      Ich kann den Fehler jetzt - hinterher ist man immer schlauer - ganz einfach benennen.

      Der Aufruf der Subroutine und die Subroutine selbst müssen (!) innerhalb des gleichen Perl-Aufrufs sein.
      Ich hatte die Subroutine in einem separaten Perl-Bereich.
      Muss man wissen ...

     Antworten

    Beitrag von richard (1187 Beiträge) am Montag, 29.Februar.2016, 17:50. WWW: posaunenchor-rhoden.de
    Re: Re: Re: Re: Re: Re: Re: Re: Re: Wie Unterprogramm mit SUB aufrufen

      Oder Du stellst die Subroutine nach oben, dann sollte es auch mit verschiedenen Perlbereichen klappen.

      Aber bevor Du das probierst mache ich meinen Rechner erstmal aus. Schönen Abend noch.

     Antworten

    Beitrag von Pouraga (1396 Beiträge) am Dienstag, 1.März.2016, 14:31.
    Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Wie Unterprogramm mit SUB aufrufen

      Darf ich jetzt noch "Klugscheissen", dass es kein "Programm" ist was du da mehrfach verwenden willst. Für perl ist es schlicht eine Zeichenkette.

      $lineal = <<"EOF";
      <table border=0 cellspacing=1 cellpadding=0><tr>
      <td width=150 bgcolor=#CCCCCC align=right><font face=Arial size=1>&nbsp;</font></td>
      <td width=150 bgcolor=#CCCCCC align=right><font face=Arial size=1>10&nbsp;</font></td>
      <td width=150 bgcolor=#CCCCCC align=right><font face=Arial size=1>20&nbsp;</font></td>
      <td width=150 bgcolor=#CCCCCC align=right><font face=Arial size=1>30&nbsp;</font></td>
      <td width=150 bgcolor=#CCCCCC align=right><font face=Arial size=1>40&nbsp;</font></td>
      <td width=150 bgcolor=#CCCCCC align=right><font face=Arial size=1>50&nbsp;</font></td>
      <td width=150 bgcolor=#CCCCCC align=right><font face=Arial size=1>60&nbsp;</font></td>
      <td width=150 bgcolor=#CCCCCC align=right><font face=Arial size=1>70&nbsp;</font></td>
      </tr>
      <table>
      EOF
      

      out $lineal

      Hätte es auch getan


      Und wenn es nicht ganz so 90er sein soll: ;)

       <style>
        .lineal {border-collapse: separate;
                 border-spacing: 1px 1px; 
                 font-family: Arial, sans-serif; 
                 font-size:0.6em; text-align: right;} 
       .lineal td {width:148px;
            background-color: #CCCCCC;}
       </style>
      
       <table class="lineal">  <tr><td></td><td>10</td><td>20</td><td>30</td><td>40</td><td>50</td><td>60</td><td>70</td></tr>  </table>

     Antworten

    Beitrag von Helmut Meisl (119 Beiträge) am Dienstag, 1.März.2016, 15:18.
    Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Wie Unterprogramm mit SUB aufrufen

      .... ist mir natürlich auch klar, es ist halt mein erstes Sub in Perl und ich hatte keine Lust, die Tabelle x-fach einzuarbeiten.
      Danke aber für die hilfreichen Hinweise!

     Antworten

    Beitrag von Sander (8133 Beiträge) am Mittwoch, 2.März.2016, 00:33.
    Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Wie Unterprogramm mit SUB aufrufen

      ich verpack so etwas aber auch gern in subs um sie oben im wichtigen Teil aus dem Weg zu haben.... ;)

     Antworten


     
 Liste der Einträge von 1500 bis 1650:Einklappen Zur Eingabe 
Neueste Einträge << 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | Neuere Einträge < Zur Eingabe  > Ältere Einträge | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 >> Älteste Einträge


Zurück zur Homepage

© baseportal.de. Alle Rechte vorbehalten. Nutzungsbedingungen



powered in 0.10s by baseportal.de
Erstellen Sie Ihre eigene Web-Datenbank - kostenlos!