#!/usr/bin/perl -s # urlencode - URL encode or decode the given strings # Steve Kinzler, kinzler@cs.indiana.edu, Jan 03 # http://www.cs.indiana.edu/~kinzler/home.html#web $usage = "$0 [ -d ] [ arg ... ] -d decode instead of encode If no arguments are given, standard input is used.\n"; die $usage if $h; $in = (@ARGV) ? join(' ', @ARGV) : join('', <>); print(($d) ? &urldecode($in) : &urlencode($in), "\n"); ############################################################################### sub urlencode { local($_, $mlm) = (join('', @_), $*); $* = 1; s/[^ \w!\$'()*,\-.]/sprintf('%%%02x', ord $&)/ge; s/ /+/g; $* = $mlm; return $_; } sub urldecode { local($_, $mlm) = (join('', @_), $*); $* = 1; s/\+/ /g; s/%([\da-f]{2})/pack('C', hex $1)/gie; $* = $mlm; return $_; }