Die Übergabe an Perl ist allerdings voll von Steuerzeichen %2C und so weiter...
Das liegt nicht an Perl, sondern an Deiner Übergabemethode.
In URLs haben bestimmte Steuerzeichen nun mal bestimmte Bedeutungen, deshalb muß man viele Zeichen in einer bestimmten Codierung übertragen, um sie auf der Empfangsseite von ihrer Meta-Bedeutung unterscheiden zu können. Genau solche "URL encoded"-Werte hast Du vor Dir.
Aber glaubst Du, Du wärest der erste, der eine CGI-Anwendung schreibt?
Natürlich gibt es längst fertige Perl-Module, die diese Umsetzung automatisch machen.
Such mal im Archiv nach "use CGI;" ...