Splitten ohne Zeichen?
Tom
- perl
Hi,
gibt es in Perl eine Möglichkeit, ohne Zeichen zu splitten? Also z.B. dass von einer Zahl (z.B. 32549) jede Ziffer als Skalar eines Arrays gesplittet wird?
Bzw. kann man es auch machen, dass nach jeder 2. Ziffer (oder 3., 4. ...) splittet?
Danke & viele Grüße
Tom
Hi!
gibt es in Perl eine Möglichkeit, ohne Zeichen zu splitten? Also z.B. dass von einer Zahl (z.B. 32549) jede Ziffer als Skalar eines Arrays gesplittet wird?
Bzw. kann man es auch machen, dass nach jeder 2. Ziffer (oder 3., 4. ...) splittet?
Mit split() geht das meines Wissens nicht. Ich wuerde das ungefaehr so machen:
$string = "32549";
push(@chars, $1) while($string =~ s/^.//);
bzw. um immer zwei Zeichen abzusplitten:
push(@twochars, $1) while($string =~ s/^..//);
push(@twochars, $string) if ($string); # falls eine Ziffer uebriggeblieben, diese auch noch pushen
Calocybe
Hi Calocybe,
also ich hab das jetzt mal so probiert (hoffentlich hab ich das richtig verstanden):
open(ID,"$root/dat/$Q{'id'}.txt");
$countvalue = <ID>;
close(ID);
push(@chars,$countvalue) while($countvalue =~ s/^.//);
print "Content-type: text/html\n\n";
foreach $line (@chars){
print "$line<br><br>\n";
}
in der Datei, die ausgelesen wird, steht z.B. der Wert "12345". Mit dem obenstehenden Code wird folgendes ausgegeben:
---
2345
345
45
5
---
keine Ahnung, ob das an mir liegt, oder es einfach nicht der richtige Code für so eine Anwendung ist...
danke & viele Grüße
Tom
Hi Tom!
Sorry, ich hatte da einen Fehler gemacht (und diesen dann weiter kopiert):
Nochmal mein Text:
push(@chars, $1) while($string =~ s/^.//);
Muss heissen:
push(@chars, $1) while($string =~ s/^(.)//);
Durch die vergessenen Klammern um den Punkt wurde $1 nicht definiert - das konnte natuerlich nichts werden.
Analog statt
push(@twochars, $1) while($string =~ s/^..//);
push(@twochars, $1) while($string =~ s/^(..)//);
Ansonsten ist der Code ok. Tausche einfach nochmal die push-Zeile aus.
Calocybe
Hi Calocybe,
scheint immer noch nicht zu funktionieren. Ich werd's morgen nochmals ausprobieren, ich bin jetzt wohl schon zu müde dafür :)
Schon mal danke für Deine Hilfe
Gruß
Tom
Also z.B. dass von einer Zahl (z.B. 32549) jede Ziffer als Skalar eines Arrays gesplittet wird?
Das geht, und zwar mit der naheliegendsten Konstruktion:
$wert = 32549;
@array = split (//, $wert);
foreach my $feld (@array)
{print "Feld: '$feld'\n"; }