Я думаю, что вы не повезло здесь. Net::Domain::TLD предоставит вам список TLD, но это не то, что вы хотите.
Как я понимаю, учитывая адрес электронной почты, такой как [email protected], вы хотите получить domain.com. TLD здесь «com», и вы хотите, чтобы TLD и раздел домена, который был до него. Это легко.
А затем есть [email protected] Здесь TLD является «uk». Но здесь вам не нужен TLD и раздел домена, который предшествует ему - вам нужно два раздела перед TLD.
Так что, возможно, вам нужна эвристика. Если TLD имеет длину в три буквы, возьмите предыдущий раздел домена, и если TLD имеет длину в три буквы, возьмите предыдущие два раздела.
Но это тоже не работает. Не все ccTLD имеют определенные поддомены, такие как .uk. Возьмите, к примеру, популярный ctTLD .tv. Они позволяют вам регистрировать домен непосредственно под ccTLD.
Для этого вам не нужен список TLD. Вам также необходимо понять правила, которые каждый из TLD применяется к регистрации. И со временем они могут меняться. И вводятся новые TLD - вам нужно идти в ногу со всеми этими.
О, и один последний пункт. Даже большие ccTLD, такие как .uk, не всегда следуют своим собственным правилам. Есть несколько доменов .uk, у которых нет субдомена верхнего уровня - .british-library.for например.
Возможно, вы сможете реализовать это для подмножества доменов, которые вас особенно интересуют. Но полное решение было бы невероятно сложным и почти невозможным для обновления.