1. Perfect catches do not, to my knowledge, as it's not listed and I've gotten longer fish from non-perfect catches than from perfect catches. However fishing zone and fishing skill level definitely do, it's not totally random. I'm no expert on that area though, all of that is just anecdotal and could be wrong.
2. There is a 15% chance of one spawning on a given catch (baseline). You can increase that via Magnet bait, the Treasure Hunter Lure, and the Pirate Profession, to get it as high as 50%. If it's going to spawn for a catch, it does so pretty soon, before the catch will finish even if it's a perfect catch, in my experience. If it's not going to spawn, it will never spawn. It doesn't sometimes spawn like a minute into a difficult catch for example.