Если не выполняется именно по крону - для начала попробуй прописать все пути к файлам в абсолютной форме, в т.ч. те что у тебя в fopen, exec и где еще есть. Т.е. в начале пишем
$basePath = "/home/blabla/";
А далее соотв
fopen ($basePath."con.sim", "r")
итд
А вообще - "переделывать на Perl" - самое правильное решение. По определению