We don't know exactly what you are trying to do, and seemingly irrelevant details are very important.
The fundamental problem has to do with encodings. ASCII proper only encodes things in the top 127 encodings. The representation of the remaining 128 things that fit in a byte is unspecified. Unfortunately the first approach to handling extra characters which are not in ASCII was to use the top 128 in different ways. Each way is different. And, for instance, in Windows the default way to handle those characters within a DOS prompt differs from what is is in a default Windows application. (And just what is shown may depend on the locale that you chose.) Just to confuse things, Windows cut and paste is designed to keep the visible characters the same, even when you change the representation. So if you see it in a Windows application, then cut and paste it into a script that you then show in a DOS prompt, you may see something very different from what you cut and pasted.
So our problem is that we don't know what operating system you are on, where the Cyrillic text is coming from, how you are getting it into your Perl, and where you're looking at the output in. Every single one of these factors can affect the answer. (Yes, Unicode is supposed to solve this problem. The last time that I cared - which was several years ago - DOS prompts did not properly support UNICODE. I'm guessing that you're seeing the output of Perl in a DOS prompt...)