in reply to Escaping characters in the array

While particle mentions quotemeta, you can also use the in-line version of same. The real problem seems to be the way you are using your arrays. You're not indexing correctly. Looks like some C-style looping you've got there. How about this?
foreach my $cur_cnt (0..$#current) { foreach my $base_cnt (0..$#base) { if ($base[$base_cnt] =~ /^\Q$current[$cur_cnt]\E/) { # ... } } }
Better still to just iterate and forget the index unless you actually need it:
foreach my $current (@current) { foreach my $base (@base) { if ($base =~ /^\Q$current\E/) { # ... } } }
Less is more, especially with programming.

As an explanation, the \Q starts "escaping" special characters, the \E stops, using a quotemeta equivalent.