title: Why do some functions in Perl have to be called with parens and others don't?
body: <p>An example to illustrate is the Synopsis of my own <a href="http://search.cpan.org/dist/Test-Version/lib/Test/Version.pm" rel="noreferrer"><code>Test::Version</code></a>.</p>
  
  <pre><code>use Test::More;
  use Test::Version 0.04;
  
  # test blib or lib by default
  version_all_ok();
  
  done_testing;
  </code></pre>
  
  <p>I don't have to include parenthesis on <code>done_testing();</code> I can simply call it. However when I've tried to call <code>version_all_ok;</code> <em>( note: First attempt at Dist::Zilla::Plugin::Test::Version failed this way)</em> I get an error. Why is this?</p>
  
  <p><strong>Update</strong> Perhaps my example is not quite as good as I've thought. The actual error I've gotten is</p>
  
  <pre><code>Bareword "version_all_ok" not allowed while "strict subs" in use at t/release-test-version.t line 19.
  </code></pre>
  
  <p>and here's the full code</p>
  
  <pre><code>#!/usr/bin/perl
  
  BEGIN {
    unless ($ENV{RELEASE_TESTING}) {
      require Test::More;
      Test::More::plan(skip_all =&gt; 'these tests are for release candidate testing');
    }
  }
  
  use 5.006;
  use strict;
  use warnings;
  use Test::More;
  
  eval "use Test::Version";
  plan skip_all =&gt; "Test::Version required for testing versions"
      if $@;
  
  version_all_ok; # of course line 19, and version_all_ok() works here.
  done_testing;
  </code></pre>
  
  <p>The following should be relevant snippets pulled from <code>Test::Version 1.0.0</code> for exportation.</p>
  
  <pre><code>use parent 'Exporter';
  our @EXPORT = qw( version_all_ok ); ## no critic (Modules::ProhibitAutomaticExportation)
  our @EXPORT_OK = qw( version_ok );
  </code></pre>