In your example, there's no reason to use perl over ksh. There is one extra step you have in the perl that's not in the ksh version, but it could be added with no problem (oh yeah, and ksh has a 'print' statement also):
[[ $file = *ctl ]] || continue
If you were doing lots of other things, like FTP'ing files and wanting to make decisions based on the status of every step (you're not even checking the return status of your system calls), then I might make an argument for perl. In this case it just doesn't matter.