Don't use string eval, especially when you don't need to. Try something like
sub _deprecated {
my $sh = shift;
require Carp;
Carp::carp("$sh() is deprecated; ".
"see the documentation for an alternative;");
...
}
sub import {
...
for (@_){
*{"$pkg\::$_"} = sub { _deprecated($_) };
}