Hilfe beim Split einer Zeichenkette
Daniel_T
- perl
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
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
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
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
print "Content-type: Text/plain\n\n";
Interessant, du testest Skript immer auf einem Server?
Struppi.
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
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.
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
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.
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
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.
Ü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.
Ü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.
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
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.
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
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.
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
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.