title: Is 'shift' evil for processing Perl subroutine parameters?
body: <p>I'm frequently using <code>shift</code> to unpack function parameters:</p>
  
  <pre><code>sub my_sub {
      my $self = shift;
      my $params = shift;
      ....
  }
  </code></pre>
  
  <p>However, many on my colleagues are preaching that <code>shift</code> is actually evil. Could you explain why I should prefer</p>
  
  <pre><code>sub my_sub {
      my ($self, $params) = @_;
      ....
  }
  </code></pre>
  
  <p>to <code>shift</code>?</p>