Re: @CB - Ganz seltsames Phänomen - erklärbar ;-) - 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 Christoph Bergmann (8110 Beiträge) am Montag, 15.Dezember.2003, 13:09.
    Re: @CB - Ganz seltsames Phänomen - erklärbar ;-)

      Versteh Dein Anliegen schon ;-) Fänds aber besser, wenn Perl direkt &bla() im Text erkennen würde (so wie $xyz ja auch)...

      Ich mach das in dem Fall so, dass ich berechnungen vor dem here-doc aufrufe:

      $x=&sub(); $y=$a*$b*10;
      out <<EOF;
      ....$x....$y....
      EOF
      


    Antworten

 Alle Einträge zum Thema: Zur Liste 
    Beitrag von hempelr (1976 Beiträge) am Freitag, 12.Dezember.2003, 15:24.
    @CB - Ganz seltsames Phänomen - Dynamsiche Variablen

      Hallo,
      ich wüsste gern mal den Unterschied zwischen
              ${td.$Field} = "<td id='td$Field' class=klein align=center valign=middle bgcolor=$tdbgc>$h_artannahme{$Field}:<br><span class=sklein>";
                ${td.$Field} .= "${radio.$Field}</span></td>";
      und 
              ${td_.$Field} = "<td id='td_$Field' class=klein align=center valign=middle bgcolor=$tdbgc>$h_artannahme{$Field}:<br><span class=sklein>";           ${td_.$Field} .= "${radio.$Field}</span></td>";

      in Bezug auf Differenzierte Behandlung zwischen Mietversion und Lizenzversion (V. v. September d.J.)

      wobei ersteres in nem Script auf Lizenz nicht funktioniert und gegen die Wand läuft, allerdings den Server nicht killt sondern nur kurz ca. 15% zieht und dann wieder 98% Idle durchgibt, aber es kommt absolut nichts zurück, der Browser wartet und wartet und nich mal ein TimeOut-Fehler kommt ??????

      Wenn mehr infos gebraucht werden auch gern per mail

      Ruben

     Antworten

    Beitrag von Christoph Bergmann (8110 Beiträge) am Freitag, 12.Dezember.2003, 15:59.
    Re: @CB - Ganz seltsames Phänomen - erklärbar ;-)

      Also beides is nich ganz sauber:

      ${td.$Field} <-- damit baust Du Dir einen Variablennamen zusammen und benutzt konstante Texte ohne Anführungsstriche!
      

      Nun versucht Perl zu "erraten", was Du mit -> td <- gemeint haben könntest, was aber je nach den Umständen nicht immer das ist was man will ;-) (td ohne Anführungsstriche könnte z.b. auch ein Subroutinen-Aufruf sein)

      ${"td".$Field}
      

      oder

      ${"td$Field"}
      

      ist auf jeden Fall besser, da Du damit klar sagst, was "td" sein soll, nämlich der Text wie er da steht -> funktioniert immer...

      Selber Fall bei ${td_.$Field} -> ${"td_$Field"} is richtig...

      Innerhalb der Anführungsstriche mit dem

      "...${radio.$Field}..."

      isses nochmal was anderes, aber es funktioniert kaum so wie Du Dir das wünschst ;-) Oder ist der "." ein Trenner, also das Feld hiesse z.b. "radio.Ort" ?

      So oder so, schreib das wie folgt:

      ${"radio$Field"}."</span>...";
      

      (oder ${"radio.$Field"}."</span>..."; wenn der Punkt im Feldnamen vorkommt...)

      klar? ;-)

     Antworten

    Beitrag von hempelr (1976 Beiträge) am Freitag, 12.Dezember.2003, 16:47.
    Re: @CB - Ganz seltsames Phänomen - erklärbar ;-)

      Erst mal ganz sehr danke für die gute Erklärung zur richtigen Schreibweise.
      das "...${radio.$Field}..." funktioniert komischerweise schon so wie ich will, hab natürlich nich überprüft, wie der Varname wirklich ist, aber er macht treu und brav ein Bündel Radiofelder, so wie ich das wollte... - und in Miete funzt das in mehreren Scripten mit der falschen Schreibweise - fängst du in bp da noch was ab?
      Und komischerweise im gesamten Script bei Lizenz auch, ich hab so in etwa 120 - 150 solcher dynamischer Variablennamen insgesamt drin, genauso ohne Doppelquotes - nur das td meckert rum (nee es meckert nicht, es lässt das Script an die Wand laufen...)

      Also das mit den Konstanten leuchtet mir ein - und die Schreibweise ${"td$Field"} auch.
      Bloss das mit der Verkettung macht mir bisserl Kopfzerbrechen, es ergeben sich da ja dann ganz eigenartige Zuweisungen wie bspw. push @l_artannahme, ${"td$Field"}."\n"; - push @l_artannahme, "${'td'.$Field}\n"; nimmt er auch klaglos, wobei mir das dann auch noch halbweg gefällt und logisch erscheint.
      Könnte man da nicht die folgende Variante auch als syntaktisch und von der Interpunktion als richtig bezeichnen ????
      $x = ${'string'.$varwert};
      
      wobei der Punkt als Verkettungsoperator dienen soll

      Danke für kurzes Re dazu
      Gruss Ruben

      PS
       warum ausgerechnet das > td < den Fehler verursacht, ist mir vollkommen unklar. Ein anderes Script baut, je nach Eingabe des Users, bis zu 60 solcher Dynamischen Variablen in der unsauberen Art und Weise und macht das vollkommen richtig - die Varnamen enthalten selbst Informationen, die ausgewertet werden und das geht... mhm - aber begriffen hab ichs schon....
      

     Antworten

    Beitrag von Christoph Bergmann (8110 Beiträge) am Freitag, 12.Dezember.2003, 17:42.
    Re: @CB - Ganz seltsames Phänomen - erklärbar ;-)

      Äh, also wenn Du's wirklich im Detail wissen willst, dann wünsch ich Dir viel Spass bei der Lektüre der "gory details of parsing quoted constructs": ;-)

      http://perldoc.com/perl5.8.0/pod/perlop.html#Gory-details-of-parsing-quoted-constructs

      Ich mach mir da normalerweise nich den Kopf drum, sondern schreibs halt hin wie ich weiss dass es funktioniert, auch wenn ich dazu 2 oder 3 Zeichen mehr brauch ;-)

      Ansonsten:

      $x = ${'string'.$varwert};
      

      is definitiv richtig, hast ja nur ' statt " verwendet, das is bei konstanten Texten dasselbe...

      Trifft Perl in ".." auf ${...} scheint es aus den "..." auszubrechen (war mir neu, aber scheint mir logisch), das erklärt warum

      "${'td'.$Field}\n";

      funktioniert - alles innerhalb der {...} behandelt Perl wie wenn es NICHT innerhalb der "..." wäre.

      "bla ${'td'.$Field} blubb";

      ist somit dasselbe wie

      "bla ".${'td'.$Field}." blubb";

      Mmh, wobei es nicht ganz stimmen kann, weil dann müsste

      "bla ${&sub()} blubb";

      auch funktionieren, was es meines Wissens nicht tut - muss so aussehen:

      "bla ${[&sub()]} blubb";

      und das hat nun gar keinen Vorteil mehr vor

      "bla ".&sub()." blubb";


      Naja, Genaueres steht in obigem Link ;-)


      push @l_artannahme, ${"td$Field"}."\n";
      

      geht sowieso (Du musst einfach immer die "Bereiche" anschauen,, also da gibts den {...} Bereich und da drin wiederum den "..." Bereiuch) und mit

      push @l_artannahme, "${'td'.$Field}\n"; 
      

      klappts nach der obigen Erklärung auch, wobei ich nich wirklich weiss ob das besser zu lesen ist - genauso lang isses ;-)

     Antworten

    Beitrag von Sander (8133 Beiträge) am Freitag, 12.Dezember.2003, 18:17.
    Re: @CB - Ganz seltsames Phänomen - erklärbar ;-)

      >>
      
      auch funktionieren, was es meines Wissens nicht tut - muss so aussehen:
      "bla ${[&sub()]} blubb";

      und das hat nun gar keinen Vorteil mehr vor
      "bla ".&sub()." blubb";
      >>
      

      Doch, hat es und zwar bei here-docs

      Sander

     Antworten

    Beitrag von Christoph Bergmann (8110 Beiträge) am Freitag, 12.Dezember.2003, 18:31.
    Re: @CB - Ganz seltsames Phänomen - erklärbar ;-)

      Stimmt allerdings... Aber schön isses trotzdem nich... ;-) Ich fänds prima, wenn &bla() direkt erkannt würde...

      PS: Meine Mail nich bekommen?

     Antworten

    Beitrag von hempelr (1976 Beiträge) am Freitag, 12.Dezember.2003, 18:42.
    Re: @CB - Ganz seltsames Phänomen - erklärbar ;-)

      geht aber auch so - und das sowohl in here-docs als auch in Stringzuweisungen:
      ${ \&sub() } 
      
      und gefällt mir sehr gut, weil im HTML-Editor gut ins highlightning einbaubar....

     Antworten

    Beitrag von Christoph Bergmann (8110 Beiträge) am Freitag, 12.Dezember.2003, 19:05.
    Re: @CB - Ganz seltsames Phänomen - erklärbar ;-)

      Hurra, 1 Zeichen gespart ;-) War mir neu, aber gefällt mir auch nich wirklich ;-)

     Antworten

    Beitrag von hempelr (1976 Beiträge) am Samstag, 13.Dezember.2003, 09:51.
    Re: @CB - Ganz seltsames Phänomen - erklärbar ;-)

      Frechdachs, geht mir nicht um ein Zeichen einsparen, sondern um das "logische" in dem Ausdruck, so kriegste auch Berechnungen und andere Perl-Funktionen direkt in here-docs (bei der Syntax muss alles im scalaren Context stehen); und das ist ja eigentlich ne klasse Sache (übrigens, ist nicht auf meinem Mist gewachsen, ist aus dem Perl-Kochbuch)
      Ist doch eifach zu merken: ${ \ beliebiger Ausdruck im scalaren Kontext }
      Ausserdem "liebe" ich diese Form, weil sie mein Syntaxschema für Phase5 unterstützt ;-)

     Antworten

    Beitrag von Christoph Bergmann (8110 Beiträge) am Montag, 15.Dezember.2003, 13:09.
    Re: @CB - Ganz seltsames Phänomen - erklärbar ;-)

      Versteh Dein Anliegen schon ;-) Fänds aber besser, wenn Perl direkt &bla() im Text erkennen würde (so wie $xyz ja auch)...

      Ich mach das in dem Fall so, dass ich berechnungen vor dem here-doc aufrufe:

      $x=&sub(); $y=$a*$b*10;
      out <<EOF;
      ....$x....$y....
      EOF
      

     Antworten

    Beitrag von hempelr (1976 Beiträge) am Montag, 15.Dezember.2003, 13:45.
    Re: @CB - Ganz seltsames Phänomen - erklärbar ;-)

      mhm - also mit dem "selbst erkennen" von Perl wäre nicht schlecht...
      Und mit den Berechnungen vor dem here-doc ist ja schon klar, aber manchmal hat man soviel zui "berechnen", dass man vor lauter temporärer Variablennamen nicht mehr durchblickt (weisst doch, mancher ist liederlich und schreibt sich nicht alle varnamen auf - und dann geht ne wilde sucherei im Quelltext los.... ;-)
      Und ganz toll ist, dass mit der gezeigten Syntax auch bedingte Ausgaben machen kann, bspw. wenn in nem Datenbankfeld nix steht nix und sonst halt irgendwelchen Text: (hatte ich mal vor nem reichlichen Jahr gefragt, hat keiner nen Tipp gehabt, hier ist er jetzt - und nur durch die Dskussion in diesem Thread drauf gekommen durch die Hinweise zur richtigen Interpunktion
      ----schnipp
      $url = "http//www.domain.de";
      $var = "Variable1 belegt";
      $var2 = "ohne Anzeige";
      out<<EOF;
      Die Werte sind<br>
      ${ \("<b>".(substr $url, (index $url, ":") +3)."</b><br>") if (index $url,":") >-1; }
      Grad bemerkt, dass da auch bedingte Ausgaben gehen müssten<br>
      String 1 ${ \"da ist die var: $var" if $var ne "" } und String 2 ${ \($var2 ne "ohne Anzeige" ? "da ist was drin $var2" : "Var2 wird nicht angezeigt, weil auf Wert abgefragt")}
      EOF
      
      ----schnapp

     Antworten

    Beitrag von hempelr (1976 Beiträge) am Montag, 15.Dezember.2003, 14:28.
    Re: @CB - Ganz seltsames Phänomen - erklärbar ;-)

      sorry - war vorhin noch nich ganz fertig.... enter irrtümlich erwischt....

      Das ganze ist zwar durch die Interpolation etwas langsamer, hab einen Test mit einer Million Schleifendurchläufen gemacht für obigen Code und den gleichen Code mit Var-Belegung vor dem here-doc, folgede Ergebnisse:
      1) "Berechnungen" im here-doc: 8.05 Sekunden
      2) "Berechnungen" und "Zwischenvariablen" vor dem here-doc: 6,48 Sekunden
      Also ist schon sichtbar, dass der "interpollationskonstrukt" ${ \skalarer Perl-Ausdruck} etwas langsamer als die direkte Zuweisung an Zwischenwars ist....

     Antworten

    Beitrag von hempelr (1976 Beiträge) am Freitag, 12.Dezember.2003, 18:31.
    Re: @CB - Ganz seltsames Phänomen - erklärbar ;-)

      >>..dann wünsch ich Dir viel Spass bei der Lektüre der "gory details of parsing quoted constructs": ;-)
      
      heftig, heftig - ich lass es.... :-|
      Deine Erläuterungen sind sehr umfangreich - danke.
      Glaub, deine (und die von mir auch - wenn auch mit unsauberen Varianten) praktizierte Methode "wies funzt wirds gemacht" ist wohl die beste.....aber halt auch manchmal schwer zu debuggen, wenn denn mal der Wurm drin ist (obwohl - so mehr und mehr kriegt man schon ne Art intuitive Vorstellung, wo in etwa der Hase im Pfeffer liegen könnte...)

      CU
      Ruben

     Antworten


     
 Liste der Einträge von 33300 bis 33450:Einklappen Zur Eingabe 
Neueste Einträge << 10 | 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.06s by baseportal.de
Erstellen Sie Ihre eigene Web-Datenbank - kostenlos!