in reply to (1) line of sh vs (~20) lines of perl ?

I'm not going to try to turn your script into a one-liner (smarter people already have) but you could trim down your original script using the '-M' function

push(@files, "${File::Find::dir}/$_") if(!-l $_ and (-M $_) > 30);

Note, I'm sorry I haven't tested this but it should work