#!/usr/bin/perl use strict; use warnings; my $temp = 'key1=two_tabs%09%09+other_two_tabs%09%09&key2=three_nulls_%00%00%00'; my @pairs = split(/&/, $temp); foreach my $item(@pairs) { my ($key, $value) = split(/=/, $item, 2); $value =~ tr/+/ /; $value =~ s/%(..)/pack("c", hex($1))/ge; $value =~ s/\t/ /g; $value =~ s/\0//g; print "Key: '$key', value: '$value'\n"; }