If foo wants to use Modern::Perl, then foo better 'use Modern::Perl;' (or require...). If foo isa bar, and bar uses Modern::Perl, then it's merely a coincidence that foo can access Modern::Perl, and must not be depended upon. Same goes for export/import. If bar imports everything from Modern::Perl, and re-exports it, then foo imports everything from bar, then foo is still using bar, and should not assume anything about Modern::Perl.

If you code all of your dependencies into bar, and then restructure foo not to use bar, foo breaks. You'll have to sift through it all and figure out what foo really used that bar magically provided. Magic is bad. @EXPORT is bad for similar reasons... not explicitly specifying what symbols come from where in every package leads to lots of guesswork for future maintainers, and guesswork leads to bugs.

I think you've misunderstood what Modern::Perl is. It's basically a pragma equivalent to use strict, use warnings, and a couple other "modern" things, all lexically scoped. So if foo isa bar and bar uses Modern::Perl, there is no effect on foo.
But the question is how to make your own "pragma" that does what Modern::Perl does, presumably plus some other things.