Thanks for the long answere.
I have one array with all non core modules I need for the execution of the script. If eval "use $_" fails, the module gets pushed into the second array — @NotInstalledModules.
The script then installs all @NotInstalledModules via cpanm.
eval "use $_" was the last missing part of the puzzle after the installation.