title: Map strange behaviour
body: <p>I have a map function as follows, which reads from an array of lines generated by a unix command.</p>
  
  <pre><code>my %versions =  map {  
    if (m/(?|(?:^Patch\s(?(?=description).*?(\w+)\sPATCH).*?(\d+(?:\.\d+)+).*)|(?:^(OPatch)\s(?=version).*?(\d+(\.\d+)+)))/) 
      { 'hello' =&gt; 'bye'; } 
  } @dbnode_versions;
  </code></pre>
  
  <p><code>print Dumper(\%versions);</code> gives</p>
  
  <pre><code>$VAR1 = {
        '' =&gt; undef,
        'hello' =&gt; 'bye',
        'bye' =&gt; ''
      };
  </code></pre>
  
  <p>which I find extremely odd, as the hello and bye values should only get added if the regex is true. Anyone able to help me out?</p>