Probleme mit #

Hallo,

kann mir jemand schreiben, weshalb das nicht funktioniert:

$value =~ s/*/#/g;

Es geht auch nicht wenn ich das # maskiere (habs nur getestet, obwohl es ja nicht zu den Zeichen gehoert, die maskiert werden muessen).

Ich habe aber auch sonst nirgendwo einen Hinweis gefunden.

Vielleicht weiss auch jemadn von Euch, wie man diese # in einer URL uebertraegt. Die Url wird einfach nach dem #-Zeichen abgeschnitten. Auch da hilft escapen nichts.

Gruss
Christian

Hallo,

kann mir jemand schreiben, weshalb das nicht funktioniert:

$value =~ s/*/#/g;

Es geht auch nicht wenn ich das # maskiere (habs nur getestet,
obwohl es ja nicht zu den Zeichen gehoert, die maskiert werden
muessen).

Schreib mal genauer, was Du machen willst (mit
Beispiel). Bist Du sicher, dass Du ‚*‘ (*) meinst
und nicht ‚.*‘?

Ich habe aber auch sonst nirgendwo einen Hinweis gefunden.
Vielleicht weiss auch jemadn von Euch, wie man diese # in
einer URL uebertraegt. Die Url wird einfach nach dem #-Zeichen
abgeschnitten. Auch da hilft escapen nichts.

Konkretes Beispiel?

http://www.faqs.org/rfcs/rfc1738.html

 ...
 The character "#" is unsafe and should
 always be encoded because it is used 
 in World Wide Web and in other systems 
 to delimit a URL from a fragment/anchor 
 identifier that might follow it. 
 ...

Grüße

CMБ

Hallo,

kann mir jemand schreiben, weshalb das nicht funktioniert:

$value =~ s/*/#/g;

was heisst denn „nicht funktioniert“? Fliegt dein Rechner in die Luft
oder bekommst du vielleicht eine Fehlermeldung? Wenn du keine Fehlermeldung
bekommst, ist irgendetwas kaputt oder du arbeitest mit CGI und hast noch
nie was vom errorlog gehört *Glaskugel anschalt*.

Die Fehlermeldung, die normalerweise ausgegeben wird, lautet:

Quantifier follows nothing in regex; marked by 

perl sagt einem also sehr deutlich, was man falsch macht.

Ein Quantifier ist z.b. '\*' - er bedeutet, matche das vorhergehende
Zeichen beliebig oft (z.b. auch null mal).
perl sagt hier, dass der Quantifier auf nichts folgt, und mit dem

use URI::Escape qw/ uri\_escape /;
my $encoded = uri\_escape($raw);

Das wandelt die meisten Zeichen in ihre kodierte Form mit dem Prozentzeichen
vorne um, das hast du bestimmt schonmal gesehen.

gruss,
tina