The question is what perlcritic policy is complaining/broken?
$ perlcritic --brutal --verbose=9 ....
[Freenode::DeprecatedFeatures] autoderef is deprecated at line 2, near
+ '$Person->shift( $foo );'. (Severity: 4)
[Freenode::DeprecatedFeatures] autoderef is deprecated at line 4, near
+ '$Person->shift( $hash->{shift} );'. (Severity: 4)
So this is a bug in Perl-Critic-Freenode-0.027 / Perl::Critic::Policy::Freenode::DeprecatedFeatures
A shift method isn't tested in https://metacpan.org/source/DBOOK/Perl-Critic-Freenode-0.027/t/Freenode/DeprecatedFeatures.run