Yes, it's possible.
But your characters are shown all as boxes in this listing, so nobody can verify if you are using the right regular expression. You are writing about question marks, commas and periods, but these characters are definitively no question marks, commas and periods, else we could see them here properly. For example, I can see the comma after "FILE" properly, and the period after "affairs", in line 16: open(FILE, "world affairs.txt")
Other programmers probably wouldn't see the characters correctly, too, only if they use the exact editor and local settings you used.
So do us an the others a favor and code professionally:
use the normal ascii-characters instead of the same-looking national character, and if you want to count some national characters, use hexadecimal values of unicode for them to code them, instead of pasting them directly into the source code.
Example:
You can match hex characters with \x. Just put \x before the hexadecimal number. For instance, if you wish to replace all backspace characters with nothing, use this:
perl -pi -e "s|\x08||g" file.txt
By the way, why are you putting your counting results in $shed_counter, $doubleshed_counter and $ga_counter, but printing out $comma_counter, $period_counter and $qm_counter? all these latter variables are global and not initialized! It looks like a programming error. You probably want to print out the first mentioned variables.