$loop_line = "static replace [something] and [another]\n"; %replace_table = ('something','this','another','that'); print $loop_line; while ($loop_line =~ /\[([^]]*)\]/) { my $replace = $1; my $replacement = $replace_table{$1}; $loop_line =~ s/\[$replace\]/$replacement/; }; print $loop_line;