in reply to Loading all files in a dir with use via for loop

Use require (which expects a namespace as a bareword or a path as an expression, and happens at run-time), not use (which expects a namespace as a bareword, and happens at compile time):

foreach $plugin (<Main/*.pm>) { require $plugin; }

Of course, I'm assuming the module really is a module (i.e. has a package). If it doesn't, you should be using do (and shouldn't use .pm).

I'm also assuming you're not trying to import any symbols, since use imports symbols, while require doesn't. I consider importing symbols from a dynamically loaded modules to be dangerous and unnecessary.