The practice is inherently easy to make unsafe, though.
This is true. I should have posted the following rewrite of your example
# This works but is NOT recommended, and can be unsafe.
my $s = "0xDEADBEEF"; # here we assign from a constant - but where
# does the value come from in your code?
my $n = eval $s;
print "$n\n";
# Output:
# 3735928559
which makes that point clear. It is not the eval of a string constant, hard coded into a program which is unsafe, but eval'ing a string from elsewhere.
perl -le'print map{pack c,($-++?1:13)+ord}split//,ESEL'