If you consult perldoc -f require you will see that require will behave differently when given a bareword or a string. In the case of a string, require assumes you are wanting to load a file. But in the case of a bareword, it assumes you mean a module. This gives nasty overhead when you are trying to dynamically require modules at runtime, since you will need to change the module notation (Acme::Comment) to a file notation fitting the particular platform you are on.