However, I have been told that this is very inefficient and that it would be better to load it into memory and run it as a loop.
I'd just like to post my disagreement with your source ;)
Task scheduling is, and should be IMO, left to the operating system. This is what cron (and Windows task scheduler, and <insert examples from other OSs here>) was made for, and it does a great job of it.
As far as possible inefficiency.. this is just plain untrue. The cron daemon is running on nearly any POSIX system (unless the bofh is in a masochistic mood ;), so there is really no overhead, aside from the invocation of perl at each run.