\x$_
slu
- perl
Hallo allemiteinander. (Oder besser: Guten Morgen)
Also zuerst mal danke für alle Profis, die sich hier im Forum Zeit nehmen die Fragen zu beantworten...
Leider checke ich jetzt auch etwas nicht ganz:
sub Convert($Input)
{
@Sonderzeichen = (FC,F6,DC,C4,D6,DF,A7,E4,'3F','3A','3B','2C','2B','3D','40','2F','21','22','23','24','25','26','27','28','29');
$Input =~ s/+/ /g;
for(@Sonderzeichen)
{
$Input =~ s+%$_+\x$_+g;
} /\
}
Ich kan für das \x$_ irgendein Zeichen zum Beispiel ? einsetzten und es funktioniert tadellos.
Alle Zeichen werden ? ersetzt.
Weiss jemand an was das liegt?
((? nützen mir leider eher wenig... :-)))
Also, dann viele schöne verschlafene Grüsse
Stefan Ludwig
Hi,
$Input =~ s+%$_+\x$_+g;
Ich kan für das \x$_ irgendein Zeichen zum Beispiel ? einsetzten und es funktioniert tadellos.
\x ist leider nicht so dynamisch, wie Du es gerne hättest: Die _Zeichenfolge_ "$_" wird hier versucht, als Hexwert zu interpretieren, nicht der Inhalt der Variablen.
Wenn ich Dein Anliegen aber richtig interpretiere, willst Du eigentlich das CGI-Modul und CGI::unescape verwenden:
use CGI;
my $input = '%FE%09'; # Es ist übrigens _sehr_ unüblich, Variablennamen mit Großbuchstaben beginnen zu lassen. Macht Quelltexte schwer lesbar, sowas.
$input = CGI::unescape($input);
Das hat zudem den Vorteil, daß _alle_ kodierten Sonderzeichen umgewandelt werden, und nebenbei kannst Du die Fähigkeiten des CGI-Moduls auch anderweitig in Deinem Script verwenden. Selbst in nicht-CGI-Scripts ist das zuweilen sehr nützlich.
Cheatah
Hallo nochmals
\x ist leider nicht so dynamisch, wie Du es gerne hättest: Die _Zeichenfolge_ "$_" wird hier versucht, als Hexwert zu interpretieren, nicht der Inhalt der Variablen.
Tja, das könnte sein, denn es funktioniert auch sonst nicht überall.
use CGI;
my $input = '%FE%09';
$input = CGI::unescape($input);
Wow, *totalüberrumpeltsei*.
Was auch immer du damit sagen willst, es kommt mir ziemlich CGI-"Spanisch" vor.
Ich wusste gar nicht wie man CGI (CGI != perl, oder?) -Befehle einbauen kann.
=> Kann mir vielleicht irgendeinen Tip geben, wo man diese Sachen (solche wie oben) nachlesen kann?
Wäre echt super.
Na dann bis bald
Stefan
Hi,
use CGI;
my $input = '%FE%09';
$input = CGI::unescape($input);Ich wusste gar nicht wie man CGI (CGI != perl, oder?) -Befehle einbauen kann.
ad 1) Ja, CGI != Perl.
ad 2) Nein, es gibt keine CGI-Befehle ;-)
Das Perl-Modul namens CGI.pm beinhaltet aber eine Menge äußerst nützlicher Funktionen, die man im CGI-Kontext (und auch außerhalb desselben) häufig braucht.
=> Kann mir vielleicht irgendeinen Tip geben, wo man diese Sachen (solche wie oben) nachlesen kann?
perldoc CGI
Jedes Perl-Modul bringt eine Doku mit. Die Funktion unescape (und auch das Gegenstück escape) ist aber dort nicht dokumentiert; man muß sie sich aus dem Quellcode des Moduls anlesen.
Cheatah
Hi!
perldoc CGI
Jedes Perl-Modul bringt eine Doku mit. Die Funktion unescape (und auch das Gegenstück escape) ist aber dort nicht dokumentiert; man muß sie sich aus dem Quellcode des Moduls anlesen.
Wenn es nur um das escapen/unescapen geht, ist das Modul URI::Escape vielleicht ratsamer. Erstens hat es nur 1/40 der Groesse von CGI (wird also schneller geladen) und dokumentiert sind die Funktionen darin auch noch (d.h. in der naechsten Version sind die immer noch da und funktionieren auch noch genauso). Im Gegensatz zu CGI ist es allerdings kein Standardmodul, man muss es also evtl. noch von CPAN ziehen und installieren (no compilation required).
So long
Hi,
Wenn es nur um das escapen/unescapen geht, ist das Modul URI::Escape vielleicht ratsamer. Erstens hat es nur 1/40 der Groesse von CGI
ACK...
(wird also schneller geladen)
...NACK. Bei einem auch nur halbwegs gut eingerichteten System bleiben oft verwendete Module im Speicher.
und dokumentiert sind die Funktionen darin auch noch
Weshalb diese beiden Funktionen nicht dokumentiert sind ist mir auch ein Rätsel :-) denn eigentlich ist die Doku zu CGI.pm ziemlich gut. Vielleicht wurde die Doku ja mittlerweile sogar angepaßt.
Cheatah
Hi auch
use CGI;
my $input = '%FE%09';
$input = CGI::unescape($input);
Also, das ganze funktioniert als einzelnes Programm und ich lerne gerade, das ganze zu verstehen!
Danke für diesen Tip, scheint wirklich hielfreich zu sein.
ad 1) Ja, CGI != Perl.
ad 2) Nein, es gibt keine CGI-Befehle ;-)Das Perl-Modul namens CGI.pm beinhaltet aber eine Menge äußerst nützlicher Funktionen,
die man im CGI-Kontext (und auch außerhalb desselben) häufig braucht.
Gefunden und gecheckt. Es gibt auch ausführlichere Docus sonst noch im Netz. (Danke)
Leider hab ich aber in meinem Programm noch das Problem, das es noch nicht ganz s
o klappt wie ich es will.
Aber trotzdem nochmals: Vielen Dank
Slu
Hallo nochmals:
Eigentlich ist es nicht so wichtig, aber es funktioniert jetzt wunderbar!
Dank Cheatah