100% CPU usage could mean that you are using the system efficiently. However lets assume that is not the case.
You need to look at what your script is doing, there is no magic performance improvement pill. Of course I have no idea what that might be, or how complex the script is. A start would be to profile it using
Devel::DProf to find the bottlenecks, however a small script might just need an inspection.
It could be that CPU is not really an issue, but that you are paging too much, so look at the size of your data structures - particularly if you are reading an entire file into memory. Another common error is creating too many child processes, especially within a loop. Runaway CPU usage might mean an infinite loop, so check your loop exit conditions - and possibly step through using the debugger. Inserting
sleep statements might seem attractive but they can mask other errors.
If you really have no alternative and your script is error free (!) then you can reduce its priority using Windows Task Manager or by calling the Win32 API SetPriorityClass.