Da hab ich mal irgendwann irgendwo was aufgeschnappt und nutze das seit dem. Zumindest funktioniert es, es arbeitet nach RFC 2396:
sub URI_ESCAPE {
my ($text) = @_;
return undef unless defined $text;
my (%escapes);
for (0..255) { $escapes{chr($_)} = sprintf("%%%02X", $_) }
$text =~ s/([^;\/?:@&=+\$,A-Za-z0-9\-_.!~*'()])/$escapes{$1}/g;
$text;
}
Edit: Dein Beispiel scheint mir aber nicht ganz zu stimmen.
Aus Blank wird definitiv nicht + !
my $orig = 'hallo äther';
print "$orig wird zu " . URI_ESCAPE ($orig);
Quotehallo õther wird zu hallo%20%E4ther
Last edited: 2010-04-15 21:13:36 +0200 (CEST)
10 print "Hallo"
20 goto 10