title: Why does function call as argument to the push cause 'Not an ARRAY reference' in Perl?
body: <p>Would somebody be so pleasant to explain why does the next thing happen? Here is the code:</p>
  
  <pre><code>#!/usr/bin/perl
  use v5.14;
  use warnings;
  
  my @arr = (1, 2, 3);
  
  sub func
  {
      return @arr;
  }
  
  push(&amp;func(), 4);
  
  say @arr;
  </code></pre>
  
  <p>When I try to run it, the output is <code>Not an ARRAY reference at ...</code>. </p>
  
  <p>I suppose that this is because <code>&amp;func()</code> evaluates not to the <code>@arr</code>, but to a plain list <code>1, 2, 3</code> and <code>1</code> is treated as <code>ARRAY</code> argument to the <code>push</code>. Can somebody explain why does this happen, cause in the <code>push</code> documentation I found nothing related to this.</p>
  
  <p>Thanks in advance.</p>