#!/usr/bin/perl use warnings; use strict; use Data::Dumper; sub safer { my $hash = shift; my %safer; while (my ($k, $v) = each %$hash) { s/'/\'/g for $k, $v; $safer{$k} = $v; } return %safer } my %params = ('a b' => 'c d', "a'b" => "c'd", 'a"b' => 'c"d', 'a`b' => 'c`d', "a\\'b" => "a\\'b", ); my %safer = safer(\%params); print Dumper \%safer;