system('perl -MCPAN -e \'CPAN::Shell->install("' . join('", "', @needfull) . '")\'');
A Makefile.PL should not mess with the user's system in that way.
Makefile.PL is there for reporting missing prerequisites and writing them to MYMETA.{json,yaml}, so that a CPAN client can install them if needed.
It should not install something on its own.