Leerzeichen am Anfang löschen

Leerzeichen am Anfang löschen

am 22.06.2007 14:08:25 von Heiko Rompel

Moin,

entweder bin ich blind oder stehe im Wald.
Ich möchte Leerzeichen am Anfang eines Strings löschen.
Da ich mich mit den Regulärenausdrücken noch etwas schwer tue,
habe ich google befragt und bekomme das als Antwort.

$valve =~ s/^[\s\t]+//; # Leerzeichen am Anfang löschen

Aber bei mir beleiben die Leerzeichen drin - warum?

MfG
Heiko

Re: Leerzeichen am Anfang löschen

am 22.06.2007 14:23:19 von Moritz Lenz

Hallo,

Heiko Rompel wrote:
> entweder bin ich blind oder stehe im Wald.
> Ich möchte Leerzeichen am Anfang eines Strings löschen.
> Da ich mich mit den Regulärenausdrücken noch etwas schwer tue,
> habe ich google befragt und bekomme das als Antwort.
>=20
> $valve =3D~ s/^[\s\t]+//; # Leerzeichen am Anfang löschen
>=20
> Aber bei mir beleiben die Leerzeichen drin - warum?

Kann ich nicht nachvollziehen.
$ perl -wle 'my $a=3D" abc"; $a=3D~s/^[\s\t]+//;print $a'
abc
$

Jetzt wäre es interessant zu wissen, _was_ da für Leerzeichen am Anfa=
ng
stehen. Im Zweifelsfall per ord() herausfinden:

print join(", ", map {ord} split //, $valve), "\n";

gibt dir die ASCII-(bzw. Unicode-)-Werte für $valve aus.

Grüße,
Moritz

--=20
Moritz Lenz
http://perl-6.de/ http://moritz.faui2k3.org/

Re: Leerzeichen am Anfang löschen

am 22.06.2007 14:45:25 von Heiko Rompel

Hallo,

"Moritz Lenz" schrieb:

> Kann ich nicht nachvollziehen.

Schade :)

> Jetzt wäre es interessant zu wissen, _was_ da für Leerzeichen am Anfang
> stehen.

Spacetaste im INPUT-Feld eines HTML-Formulares gedrückt.


> print join(", ", map {ord} split //, $valve), "\n";
> gibt dir die ASCII-(bzw. Unicode-)-Werte für $valve aus.

Aber nur, wenn man das Script in der Konsole laufen läßt.
Da weiß ich aber nicht, wir ich es simuliere, das Daten von einem Formular
übergeben wurden.

MfG
Heiko

Re: Leerzeichen am Anfang löschen

am 22.06.2007 14:53:01 von Moritz Lenz

This is an OpenPGP/MIME signed message (RFC 2440 and 3156)
--------------enig24F29FFBCDFF9395772063F3
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

Hallo,

Heiko Rompel wrote:
>> Jetzt wäre es interessant zu wissen, _was_ da für Leerzeichen am A=
nfang
>> stehen.
>=20
> Spacetaste im INPUT-Feld eines HTML-Formulares gedrückt.

Wie holst du dir denn die Daten? per CGI und param()?

>> print join(", ", map {ord} split //, $valve), "\n";
>> gibt dir die ASCII-(bzw. Unicode-)-Werte für $valve aus.
>=20
> Aber nur, wenn man das Script in der Konsole laufen läßt.

du kannst mit
print STDERR join(", ", map {ord} split //, $valve), "\n";
nach STDERR schreiben, was du dann in der error.log deines Webservers
nachlesen kannst.

Alternativ kannst du auch Log::Handler nehmen und in eine Datei schreiben=


HTH,
Moritz
--=20
Moritz Lenz
http://perl-6.de/ http://moritz.faui2k3.org/


--------------enig24F29FFBCDFF9395772063F3
Content-Type: application/pgp-signature; name="signature.asc"
Content-Description: OpenPGP digital signature
Content-Disposition: attachment; filename="signature.asc"

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFGe8YuAAkekJBI0yIRAuQwAKDmzACTQ5lLT/oOB0dt+o+Z/Ls0fQCb BZE2
DFQEiho4LCU+v/0WR+eFXpk=
=O3+6
-----END PGP SIGNATURE-----

--------------enig24F29FFBCDFF9395772063F3--

Re: Leerzeichen am Anfang löschen

am 22.06.2007 14:56:00 von unknown

Post removed (X-No-Archive: yes)

Re: Leerzeichen am Anfang löschen

am 22.06.2007 15:21:20 von Wolf Behrenhoff

Heiko Rompel schrieb:
> Hallo,
>
> "Moritz Lenz" schrieb:
>
>> Jetzt wäre es interessant zu wissen, _was_ da für Leerzeichen am Anfang
>> stehen.
>
> Spacetaste im INPUT-Feld eines HTML-Formulares gedrückt.
>
>
>> print join(", ", map {ord} split //, $valve), "\n";
>> gibt dir die ASCII-(bzw. Unicode-)-Werte für $valve aus.
>
> Aber nur, wenn man das Script in der Konsole laufen läßt.

Wieso? Das gibt dir in jedem Fall die Werte aus!

Du setzt einfach vorher noch ein "print 'Finde-mich'" und dann guckst du
einfach in der erzeugen html-Seite, wo das Finde-mich steht und was für
Zahlen dahinter sind. Sozusagen ein "Debugging für arme" ;-)

> Da weiß ich aber nicht, wir ich es simuliere, das Daten von einem Formular
> übergeben wurden.

Wieso simulieren?

Aber bitte (lange Zeile):

d:\>perl -e "use CGI qw(:standard);$_=param('x');print
qq(alt:>$_<\n);s/^\s+//; print qq(neu:>$_<)" "x= test "

Ausgabe:
alt:> test <
neu:>test <

Wolf

Re: Leerzeichen am Anfang löschen

am 22.06.2007 15:22:13 von Heiko Rompel

Hallo Moritz,

auch wennich Deinen letzten Beitrag nur umständlich lesen konnt,
so muss ich Dir schreiben, das das hier:

print STDERR "Hier die Auswertung\n";
print STDERR join(", ", map {ord} split //, $valve), "\n";

zu keinem Eintrag in Log führte.

Gleich sehe ich vor lauter ? nichts mehr. :-)

MfG
Heiko

Re: Leerzeichen am Anfang löschen

am 22.06.2007 15:34:15 von Moritz Lenz

Hallo,

Heiko Rompel wrote:
> auch wennich Deinen letzten Beitrag nur umständlich lesen konnt,

Ich vergaß, dass PGP/MIME zu fortschrittlich für Microsoft-Programme =
ist.

> so muss ich Dir schreiben, das das hier:
>=20
> print STDERR "Hier die Auswertung\n";
> print STDERR join(", ", map {ord} split //, $valve), "\n";
>=20
> zu keinem Eintrag in Log führte.

Was verwendest du denn für einen Server?

Wie gesagt, du kannst auch Log::Handler benutzen und in eine Datei loggen=


Grüße,
Moritz

--=20
Moritz Lenz
http://perl-6.de/ http://moritz.faui2k3.org/

Re: Leerzeichen am Anfang löschen

am 22.06.2007 15:45:48 von Heiko Rompel

Hallo,

"Moritz Lenz" schrieb:

>49 print STDERR "Hier die Auswertung\n";
>50 print STDERR join(", ", map {ord} split //, $valve), "\n";

Erzeugt im Log diese Meldung:
Hier die Auswertung
Use of uninitialized value in split at
E:/projekte/homepages/www.altwulsdorfer-schule.de/cgibin/spe nde.pl line 50.

Warum?

MfG
Heiko

Re: Leerzeichen am Anfang löschen

am 22.06.2007 16:04:53 von Moritz Lenz

Hallo,

Heiko Rompel wrote:
>>49 print STDERR "Hier die Auswertung\n";
>>50 print STDERR join(", ", map {ord} split //, $valve), "\n";
>=20
> Erzeugt im Log diese Meldung:
> Hier die Auswertung
> Use of uninitialized value in split at=20
> E:/projekte/homepages/www.altwulsdorfer-schule.de/cgibin/spe nde.pl line=
50.

Anscheinend enthält $valve den Wert undef.

Aber warum?
Das kann man dir wohl nicht beantworten, ohne den Code zu kennen.

Grüße,
Moritz

--=20
Moritz Lenz
http://perl-6.de/ http://moritz.faui2k3.org/

Re: Leerzeichen am Anfang löschen

am 22.06.2007 16:08:39 von Heiko Rompel

Hallo,

"Moritz Lenz" schrieb:

> Anscheinend enthält $valve den Wert undef.
Aber ist doch ein Leerzeichen drin.

> Das kann man dir wohl nicht beantworten, ohne den Code zu kennen.

=== Codeschnippsel =====

read(STDIN, $input, $ENV{'CONTENT_LENGTH'});
@pairs = split(/&/, $input);
foreach $pair (@pairs) {
($name, $value) = split(/=/, $pair);
$name =~ tr/+/ /;
$name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$name =~ s/\<.*?\>//g; # Alle Tags löschen
$name =~ s/\