Ermittelte Feldlänge 'scheint' falsch zu sein
Sven
- perl
0 Sven Rautenberg0 Benne
Hallo,
ich bin am Rotieren und zweifle an meinem Verstand.
Ich habe folgendes Statement im Perl-Programm
print "$tmitteil: *$tmitteil* Länge: ";
print (length($tmitteil));
Der Wert $tmitteil kommt von einem Eingabefeld aus einem Formular
Als Ergebnis kommt:
$tmitteil: *a a a a a a* Länge: 16
Ich habe die Sterne eingefügt, damit ich führende oder nachfolgende Leerzeichen erkenne.
Wie kommt das System auf die Länge 16?
Kann es sein, dass der Text undruckbare Zeichen enthält, die mitgezählt werden?
Wie kann ich diese ggf. sichtbar machen?
Moin!
Ich habe die Sterne eingefügt, damit ich führende oder nachfolgende Leerzeichen erkenne.
Gibst du HTML aus? HTML ignoriert Whitespaces bei der normalen Textausgabe. Setze deine Sterne mindestens mal in einen <pre>-Abschnitt rein, oder betrachte dir den HTML-Quellcode dieses Bereichs.
Wie kommt das System auf die Länge 16?
Keine Ahnung, aber es könnte stimmen.
Kann es sein, dass der Text undruckbare Zeichen enthält, die mitgezählt werden?
Möglich.
Wie kann ich diese ggf. sichtbar machen?
Jedes Zeichen durchgehen und ord() anwenden, um den ASCII-Code zu ermitteln.
- Sven Rautenberg
Hallo,
Wie kann ich diese ggf. sichtbar machen?
Jedes Zeichen durchgehen und ord() anwenden, um den ASCII-Code zu ermitteln.
dafür gibt's doch unpack :)
#!/usr/bin/perl -w
use strict;
my $txt = "bla bla bla";
print "$txt: ", length($txt), "\n";
print join ", ", unpack("C*", $txt);
print "\n";
Gruß,
Benne