You name two extremes though, you have a module, complete with own namespace etc, and are trying to decide between that and system()ing a script? The module/own namespace gives you the assurance that you can even use it in scripts that may already have some sort of "update" function that does something else. The other alternative would be to make it a simple .pl containing the sub, and using do "update.pl" in your scripts, which will give the calling script it the update sub in it's own namespace.