Sven: Ermittelte Feldlänge 'scheint' falsch zu sein

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?

  1. 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

    --
    "Love your nation - respect the others."
    1. 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

      --
      ie:% fl:( br:> va:) ls:> fo:| rl:° ss:) de:[ js:| ch:| mo:} zu:)