Cannot load `Cwd` (and other, non-core, modules) at runtime
<p>Imagine I want to load a module at runtime. I expected this to work</p>

<pre><code>use warnings;
use strict;

eval {
    require Cwd; 
    Cwd-&gt;import;
};
if ($@) { die "Can't load Cwd: $@" }

say "Dir: ", getcwd;
</code></pre>

<p>but it doesn't, per <code>Bareword "getcwd" not allowed ...</code>.  </p>

<p>The <a href="http://perldoc.perl.org/Cwd.html" rel="nofollow noreferrer">Cwd</a> exports <code>getcwd</code> by default. I tried giving the function name(s) to <code>import</code> and I tried with its other functions. 
It works with the full name, <code>say Cwd::getcwd</code>, so I'd think that it isn't importing.</p>

<p>This works as attempted for a few other core modules that I tried, for example</p>

<pre><code>use warnings;
use strict;

eval { 
    require List::Util; 
    List::Util-&gt;import('max');
};
if ($@) { die "Can't load List::Util: $@" }

my $max = max (1, 14, 3, 26, 2); 
print "Max is $max\n";
</code></pre>

<p><strong>NOTE added</strong> &nbsp; Apparently, function calls with parenthesis give a clue to the compiler. However, in my opinion the question remains, please see <em>EDIT</em> at the end.  In addition, a function like <code>first BLOCK LIST</code> from the module above does not work.</p>

<hr>

<p>However, it <em>does not</em> work for a few (well established) non-core modules that I tried. Worse and more confusingly, it does not work even with the fully qualified names.</p>

<p>I can imagine that the symbol (function) used is not known at compile time if <code>require</code> is used at runtime, but it works for (other) core modules. I thought that this was a standard way to load at runtime.  </p>

<p>If I need to use full names when loading dynamically then fine, but what is it with the inconsistency?  And how <em>do</em> I load (and use) non-core modules at runtime?</p>

<p>I also tried with <code>Module::Load::Conditional</code> and it did not work.</p>

<p>What am I missing, and how does one load modules at runtime?  &nbsp; (Tried with <code>5.16</code> and <code>5.10.1</code>.)</p>

<hr>

<p><em>EDIT</em></p>

<p>As noted by <a href="https://stackoverflow.com/users/82262/matt-jacob">Matt Jacob</a>, a call with parenthesis works, <code>getcwd()</code>. However, given <a href="http://perldoc.perl.org/perlsub.html" rel="nofollow noreferrer">perlsub</a></p>

<blockquote>
  <p><code>NAME LIST;</code> # Parentheses optional if predeclared/imported.</p>
</blockquote>

<p>this implies that the import didn't work and the question of why remains. </p>

<p>Besides, having to use varied syntax based on how the module is loaded is not good. Also, I cannot get non-core modules to work this way, specially the ones with syntax like <a href="http://search.cpan.org/~rehsack/List-MoreUtils-0.416/lib/List/MoreUtils.pm" rel="nofollow noreferrer">List::MoreUtils</a> has.</p>