When you want use those as regular expression pattern for substitute command,there is no need to give match(//) operator to match those pattern.Because,you want to replace get the pattern from hash key and put it in the substitute command.For this,you can try the following script.
my $test = 'The brown fox int(10) over float(200) fence.';
my %dict = ( 'brown' => 'yellow',
'int\(\d+\)' => 'int',
'float\(\d+\)' => 'float',
);
for my $i (keys %dict) {
$test =~ s/($i)/$dict{$i}/gi;
}
print $test;
For better understanding,you can print the internal structure of hash by using Dumper function.
You need to escape the () parentheses,because it is used for grouping in substitute command.