title: Why does Perl function "map" give the error "Not enough arguments for map"
body: <p>Here is the thing I don't understand.</p>
  
  <p>This script works correctly (notice the concatenation in the map functin):</p>
  
  <pre><code>#!/usr/bin/perl
  
  use strict;
  use warnings;
  use Data::Dumper;
  
  my %aa = map { 'a' . '' =&gt; 1 } (1..3);
  
  print Dumper \%aa;
  
  __END__
  output:
  
  $VAR1 = {
            'a' =&gt; 1
          };
  </code></pre>
  
  <p>But without concatenation the map does not work. Here is the script I expect to work, but it does not:</p>
  
  <pre><code>#!/usr/bin/perl
  
  use strict;
  use warnings;
  use Data::Dumper;
  
  my %aa = map { 'a' =&gt; 1 } (1..3);
  
  print Dumper \%aa;
  __END__
  output:
  
  Not enough arguments for map at e.pl line 7, near "} ("
  syntax error at e.pl line 7, near "} ("
  Global symbol "%aa" requires explicit package name at e.pl line 9.
  Execution of e.pl aborted due to compilation errors.
  </code></pre>
  
  <p>Can you please explain such behaviour?</p>