Thanks, man..thats a definate help!
A couple of things though...there is a notation on the GECK pages for player.removeperk that says that 'ability' perks will crash the game unless you drop a token into the players inventory, run a separate script from the token to remove the perk/ability.
Any idea which perks qualify as 'ability' perks? Nothing comes to mind here...
Well, I dont know about that. An ability perk would be a perk that adds an ability

Double-click any perk and you'll notice the option.
I've just created a bunch of perks that add ability and i didnt encounter any problems so far when removing them.
Would a GetFirstRef/GetNextRef loop for type 86 (perks) iterate through all the player's perks?
No, those functions iterate over references in cells, so for type 86 this wouldnt make sense.
That sounds interesting, but it requires the script extender. I have not looked into that because it requires players to install that and allow steam community mode.
The first snippet I posted requires NVSE as well. You can do some pseudo-loops without NVSE, but you cant get form list elements at a specific index if i remember correctly.
This is a "chicken and egg" problem, isn't it? Your mod, by itself, cannot know the names of the other mod's perks. Their mod, by itself, cannot know the name of your formlist. If they add their perks to their own formlist, you cannot know the name of that. If there are N different mods which add perks, you would need N^2 different copies of your mod, which contained different combinations of the other mods' perks. There is no general solution apart from iteration.
Yes thats a bit of a problem. You need your mod which adds the list, and for every mod you want to support you need a patch with the mod itself and the retrainer as masters. But you wont need multiple combinations. If you add the additional perks by modifying the formlist record, the user will have to create a merged patch which will combine all entries from different patches + the original list. Or you can use script functions to add the items at runtime, which will remove the need for a merged patch.
Also theres the possibility of re-purposing an existing formid in the NV master and use it for your list, but I think that svcks