Daniel_T: Hilfe beim Split einer Zeichenkette

Hallo ihr!

Ich hab Daten, die leider so aussehen:

Preis?: 123:Bezeichnung?:Überraschungsei:Gewicht?:200g

Wie kann ich das in einzelne Zeilen aufsplitten? Die Daten kommen leider so an, d.h. ich kann daran nichts mehr ändern.

Es sollte nachher
Preis: 123
Bezeichnung: Überraschungsei
Gewicht: 200g
da stehen.

Habe es hiermit versucht:
my @rest = split(/[^?]:/,$rest);
Aber logischerweise fehlt dann auch das letzte Zeichen :)

Danke!
baba Daniel

  1. Servus Daniel,

    da, schau, dös is doch net so schwer.

    1.) Machst an split auf's ":" Dann hast die Elemente in nem Array
    2.) Bei jedem Element mit einem ungeraden index machst an substr, wo Du das letzte Zeichen abschneidest
    3.) Dann kopierst immer das n-te und das (n+1)-te Element in einen String und schon hast es !

    baba Daniel

    baba Hansi

    1. Servus Daniel,

      huhu

      stimmt, so hab ich das noch gar nicht gesehen. Hab das Krampfhaft über nen regulären Ausdruck versucht zu lösen :)

      baba Hansi

      danke Daniel

  2. Hell-O!

    Preis?: 123:Bezeichnung?:Überraschungsei:Gewicht?:200g
    Wie kann ich das in einzelne Zeilen aufsplitten?

    Du möchtest also nur an Doppelpunkten splitten, vor denen kein Fragezeichen steht?

    Es sollte nachher
    Preis: 123
    Bezeichnung: Überraschungsei
    Gewicht: 200g
    da stehen.

    Dann solltest du es mal mit Look-behind versuchen:

    my $string = 'Preis?: 123:Bezeichnung?:Überraschungsei:Gewicht?:200g';  
      
    # aufsplitten  
    my @matches = split(/(?<!\?):/, $string);  
    # Fragezeichen entfernen  
    map(s/\?//, @matches);  
    # Ausgabe  
    print "Content-type: Text/plain\n\n";  
    print join("\n", @matches);
    

    Ergibt:
    Preis: 123
    Bezeichnung:Überraschungsei
    Gewicht:200g

    Siechfred

    --
    Hier könnte Ihre Werbung stehen.
    Das Steuer-Blog | Siechfreds Tagebuch
    1. print "Content-type: Text/plain\n\n";

      Interessant, du testest Skript immer auf einem Server?

      Struppi.

      1. Hell-O!

        print "Content-type: Text/plain\n\n";
        Interessant, du testest Skript immer auf einem Server?

        Ja, da ich einfach keine Zeit resp. keine Lust habe, mir eine lokale Testumgebung einzurichten :-)

        Siechfred

        --
        Hier könnte Ihre Werbung stehen.
        Das Steuer-Blog | Siechfreds Tagebuch
        1. print "Content-type: Text/plain\n\n";
          Interessant, du testest Skript immer auf einem Server?

          Ja, da ich einfach keine Zeit resp. keine Lust habe, mir eine lokale Testumgebung einzurichten :-)

          Das wundert mich etwas (im positiven, da deine Perl Kenntnisse ja nicht gering sind), weil Perl selbst unter windows schnell und einfach installiert ist und dann im DOS Fenster die Skripte sich schnell und einfach ausführen lassen.

          Zumal, zumindest bei mir, immer wieder Fehler auftreten in CGI Programmen, die sich nur sehr schwer auf dem Server lokalisieren lassen (sich jedesmal den errorlog Eintrag rauszusuchen ist ja auch nicht grad zeitsparend)

          Struppi.

          --
          Javascript ist toll (Perl auch!)
          1. Das wundert mich etwas (im positiven, da deine Perl Kenntnisse ja nicht gering sind), weil Perl selbst unter windows schnell und einfach installiert ist und dann im DOS Fenster die Skripte sich schnell und einfach ausführen lassen.

            Naja, ich hatte mal einen Apachen nebst ActiveState Perl auf meiner XP-Kiste zu Hause laufen, habe dann aber feststellen müssen, dass eine Web-Umgebung zuweilen doch ein bisschen anders reagiert als eine lokale Testumgebung. Und da ich Perl-Skripte eigentlich nur als Webanwendungen zusammenbaue, teste ich sie halt auch auf einem Webserver. Außerdem bietet mein Webspace solch nette Sachen wie Image::Magick oder PDF-Unterstützung.

            Zumal, zumindest bei mir, immer wieder Fehler auftreten in CGI Programmen, die sich nur sehr schwer auf dem Server lokalisieren lassen (sich jedesmal den errorlog Eintrag rauszusuchen ist ja auch nicht grad zeitsparend)

            Jepp, da gebe ich dir Recht, und wenn es nur mal wieder eine falsche Klammersetzung oder ein fehlendes Semikolon ist.

            Siechfred

            --
            Hier könnte Ihre Werbung stehen.
            Das Steuer-Blog | Siechfreds Tagebuch
            1. ich hab mal das Thema gewechselt, ich glaub wir sind jetzt im Small Talk  ;-)

              Naja, ich hatte mal einen Apachen nebst ActiveState Perl auf meiner XP-Kiste zu Hause laufen, habe dann aber feststellen müssen, dass eine Web-Umgebung zuweilen doch ein bisschen anders reagiert als eine lokale Testumgebung. Und da ich Perl-Skripte eigentlich nur als Webanwendungen zusammenbaue, teste ich sie halt auch auf einem Webserver. Außerdem bietet mein Webspace solch nette Sachen wie Image::Magick oder PDF-Unterstützung.

              Ich hab hier bei mir wesentlich mehr Pakete installiert als mein Hoster (dank ppm einfach schnell und aktuell), dann bietet eine lokale Umgebung sowas wie Tk. Schnell mal mit Perl ein Windows Anwendung gebastelt ist auch was nettes (naja, schnell ist relativ ;-) ).

              Image::Magick hab ich direkt als binary auf den Server geladen und führ das mit System aus (wobei natülrich ein bisschen Komfort verloren geht), weil mein Hoster das nicht hat. allerdings benutze ich ein eigenes Modul als Wrapper um auf den verschiedenen Rechnern die verschiedenen Bildbearbeitungstools anzusprechen (von imagemagick über Irfanview zum GD Modul)

              Aber stimmt schon, bevor ich das schöne und praktische neue Modul im Web einsetze, muss ich immer erstmal schauen ob ich das dort installiert bekomme, wenn es nicht vorhanden ist.

              Struppi.

              --
              Javascript ist toll (Perl auch!)
              1. ich hab mal das Thema gewechselt, ich glaub wir sind jetzt im Small Talk  ;-)

                Ja, ich vergaß ;-)

                Ich hab hier bei mir wesentlich mehr Pakete installiert als mein Hoster (dank ppm einfach schnell und aktuell)

                Ja, so war das bei mir auch, bis ich dann festgestellt habe, dass z.B. HTML::Template auf meinem Webspace nicht verfügbar war, sodass ich alle meine sorgfältig lokal getesteten Scripte nochmal überarbeiten musste. Ebenso erging es mir mit anderen Modulen, die ich mir lokal installiert hatte, die aber auf meinem Webspace in einer anderen Version oder gar nicht zur Verfügung standen. Da verwende ich meine Zeit doch eher auf Onlinetests als auf das Umschreiben meiner Scripte :-)

                dann bietet eine lokale Umgebung sowas wie Tk. Schnell mal mit Perl ein Windows Anwendung gebastelt ist auch was nettes (naja, schnell ist relativ ;-) ).

                Hm, mit Tk habe ich noch nicht gearbeitet.

                Aber stimmt schon, bevor ich das schöne und praktische neue Modul im Web einsetze, muss ich immer erstmal schauen ob ich das dort installiert bekomme, wenn es nicht vorhanden ist.

                Eben. Wenn ich hauptberuflicher Programmierer o.ä. wäre, dann würde ich sicher einiges an Zeit und Energie in eine lokale Testumgebung investieren, aber so bleibe ich doch lieber ein lausiger Amateur ;-)

                Siechfred

                --
                Hier könnte Ihre Werbung stehen.
                Das Steuer-Blog | Siechfreds Tagebuch
                1. Ja, so war das bei mir auch, bis ich dann festgestellt habe, dass z.B. HTML::Template auf meinem Webspace nicht verfügbar war, sodass ich alle meine sorgfältig lokal getesteten Scripte nochmal überarbeiten musste. Ebenso erging es mir mit anderen Modulen, die ich mir lokal installiert hatte, die aber auf meinem Webspace in einer anderen Version oder gar nicht zur Verfügung standen. Da verwende ich meine Zeit doch eher auf Onlinetests als auf das Umschreiben meiner Scripte :-)

                  Ich vermeide dass, indem ich neue Module die ich verwende, immer vorher auf dem Webserver kurz teste. Übrigens ist HTML::Template ein pures Perl Modul und läßt sich von Hand installieren (musste ich auch machen)

                  Eben. Wenn ich hauptberuflicher Programmierer o.ä. wäre, dann würde ich sicher einiges an Zeit und Energie in eine lokale Testumgebung investieren, aber so bleibe ich doch lieber ein lausiger Amateur ;-)

                  Naja, bin ich auch :-)

                  Struppi.

                  --
                  Javascript ist toll (Perl auch!)
                  1. Übrigens ist HTML::Template ein pures Perl Modul und läßt sich von Hand installieren (musste ich auch machen)

                    Sag bloß, du verwendest jetzt auch HTML::Template? *fg*
                    Naja, ich habe jedenfalls einfach Template.pm hochgeladen, musste dann aber noch diverse use- und require-Anweisungen ändern. Das geht aber leider bei vielen durchaus interessanten Modulen nicht.

                    [...] aber so bleibe ich doch lieber ein lausiger Amateur ;-)
                    Naja, bin ich auch :-)

                    Ich dachte, dass du das irgendwie beruflich machst. Naja, so kann man sich täuschen :-)

                    Siechfred

                    PS: der Band-Link deiner Visitenkarte funktioniert (noch?) nicht.

                    --
                    Hier könnte Ihre Werbung stehen.
                    Das Steuer-Blog | Siechfreds Tagebuch
                    1. Übrigens ist HTML::Template ein pures Perl Modul und läßt sich von Hand installieren (musste ich auch machen)

                      Sag bloß, du verwendest jetzt auch HTML::Template? *fg*

                      *g*

                      Ich bin durchaus lernfähig ;-)

                      Allerdings bin ich nicht 100% zufrieden und mische noch ein bisschen viel, bzw. sehe (noch) nicht den Sinn darin viel Programmierlogik in ein Template zu bringen (diese ganzen Loop Geschichten, verwende ich sehr sparsam)

                      Naja, ich habe jedenfalls einfach Template.pm hochgeladen, musste dann aber noch diverse use- und require-Anweisungen ändern. Das geht aber leider bei vielen durchaus interessanten Modulen nicht.

                      Das versteh ich nicht, ich hab's einfach hochgeladen (in ein lib Verzeichniss, dass ich für so Sachen extra eingerichtet habe um mit use lib am Anfang immer bekannt mache) und dann ging's 1:1. Aber stimmt bei manchen Modulen wird's schwierig, im Zweifelsfall schreibe ich an den Support und manchmal passiert dann sogar was.

                      Ich dachte, dass du das irgendwie beruflich machst. Naja, so kann man sich täuschen :-)

                      Nö, Computer sind nur ein Zubrot und jahrzehntelanges Hobby.

                      PS: der Band-Link deiner Visitenkarte funktioniert (noch?) nicht.

                      Stimmt - wie Peinlich (der fehlende Buchstabe).

                      Struppi.

                      --
                      Javascript ist toll (Perl auch!)
                      1. Allerdings bin ich nicht 100% zufrieden und mische noch ein bisschen viel, bzw. sehe (noch) nicht den Sinn darin viel Programmierlogik in ein Template zu bringen (diese ganzen Loop Geschichten, verwende ich sehr sparsam)

                        Ja, zuviele Loops und If-else-Verzweigungen rücken ein Template dann doch irgendwann in die Nähe einer Programmiersprache :-)

                        PS: der Band-Link deiner Visitenkarte funktioniert (noch?) nicht.
                        Stimmt - wie Peinlich (der fehlende Buchstabe).

                        Wenn du ihn noch verraten würdest (den Link ...), nur so aus Neugierde.

                        Siechfred

                        --
                        Hier könnte Ihre Werbung stehen.
                        Das Steuer-Blog | Siechfreds Tagebuch
                        1. PS: der Band-Link deiner Visitenkarte funktioniert (noch?) nicht.
                          Stimmt - wie Peinlich (der fehlende Buchstabe).

                          Wenn du ihn noch verraten würdest (den Link ...), nur so aus Neugierde.

                          schon geändert (das ist aber keine Seite die irgendwie repräsentativ ist)

                          Struppi.

                          --
                          Javascript ist toll (Perl auch!)
                          1. Wenn du ihn noch verraten würdest (den Link ...), nur so aus Neugierde.
                            schon geändert (das ist aber keine Seite die irgendwie repräsentativ ist)

                            Wieso, magst du die Musik, die du spielst, etwa nicht ;-))
                            Btw, was hast du eigentlich gegen deinen Vornamen ("???")?

                            Siechfred

                            --
                            Hier könnte Ihre Werbung stehen.
                            Das Steuer-Blog | Siechfreds Tagebuch
                            1. Wenn du ihn noch verraten würdest (den Link ...), nur so aus Neugierde.
                              schon geändert (das ist aber keine Seite die irgendwie repräsentativ ist)

                              ^^^^^

                              Wieso, magst du die Musik, die du spielst, etwa nicht ;-))

                              Nö, ich hab nur nicht so viel Bock an der Seite zu arbeiten.

                              Btw, was hast du eigentlich gegen deinen Vornamen ("???")?

                              Nö, nicht unbedingt, aber nach fast 30 Jahren Struppi fühl ich mich nicht angesprochen wenn jemand mich mit meinem Personalausweisnamen anspricht.

                              Struppi.

                              --
                              Javascript ist toll (Perl auch!)
                              1. Hell-O!

                                Wieso, magst du die Musik, die du spielst, etwa nicht ;-))
                                Nö, ich hab nur nicht so viel Bock an der Seite zu arbeiten.

                                Ich finde, dass sie durchaus etwas anarchistisches hat, das würde jedenfalls zum Musikstil passen :-)

                                Siechfred

                                --
                                Hier könnte Ihre Werbung stehen.
                                Das Steuer-Blog | Siechfreds Tagebuch
                                1. Ich finde, dass sie durchaus etwas anarchistisches hat, das würde jedenfalls zum Musikstil passen :-)

                                  *g* Genau das war geplant, aber irgendwann merkte ich, ohne eine gewisse Ordnung geht es nicht ;-)

                                  Struppi.

                                  P.S. Wobei Anarchismus und Ordnung natürlich sich nicht widersprechen, aber ich geh mal davon aus, dass du mit "anarchistisches" eine gewisse Unübersichtlichkeit (die wirklich beabsichtigt war) meinst.

                                  --
                                  Javascript ist toll (Perl auch!)