First of all, Argument list too long
doesn't come from perl
; it comes from the shell because you have so many files that *.fits
expanded to something too long.
To fix this, use
# GNU
find . -maxdepth 1 -name '*.fits' -exec rename ... {} +
# Non-GNU
find . -maxdepth 1 -name '*.fits' -print0 | xargs -0 rename ...
But your Perl code is also incorrect. All you need is
s/^(d+).*/$1-HSC-I-psf.fits/
which can also be written as
s/^d+K.*/-HSC-I-psf.fits/
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…