1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
sub loeschen() {
my $f_content = $_[0];
my $c_number = $_[1];
my $state = "ok";
my $pos = 0;
my $record;
while ( ($pos+12) < length($f_content)) {
$record = substr($f_content,$pos+3,4);
if ($record == "2500" || $record == "2800") { substr($f_content,$pos,128, ""); } # löschen funktioniert
if ($record == "1500" || $record == "1800") { substr($f_content,$pos,128, 0, " " x 128); } # einfügen nicht
$pos += 128;
}
return $f_content, $state;
}
2013-08-16T05:21:35 rucoGuten Morgen!
Ich habe eine Frage zu substr. Wenn ich in einer Schleife (abhängig von der Länge des Strings), einen String bearbeite, indem ich Teile lösche funktioniert das soweit ganz gut.
Wenn ich aber in der gleichen Schleife versuche dem String Zeichen hinzuzufügen führt das mit unter zu einer Endlosschleife. Irgendwie ist das auch verständlich, dass das nicht so einfach funktionieren kann, denn am Anfang wird ja die Länge des Strings bestimmt, die sich dann ja ändert. Nur warum kommt dann eine Endlosschleife zustande? Gibts eine einfache Lösung?
QuoteCode: (dl )1
2
3
4
5
6
7
8
9my $state = "ok";
my $pos = 0;
my $record;
while ( ($pos+12) < length($f_content)) {
$record = substr($f_content,$pos+3,4);
if ($record == "2500" || $record == "2800") { substr($f_content,$pos,128, ""); } # löschen funktioniert
QuoteCode: (dl )if ($record == "1500" || $record == "1800") { substr($f_content,$pos,128, 0, " " x 128); } # einfügen nicht
Quote