Como uma questão de expressões regulares (procurar texto por padrões e fazer substituições com base nelas), isso não é difícil; Estou surpreso que não há respostas depois de 15 horas. Eu não sou tão experiente em Perl quanto gostaria, mas uma abordagem direta ao problema entre parênteses é simplesmente detectá-lo depois e corrigi-lo:
$_ =~ s/(\d{4})/($1)/g;
$_ =~ s/(\((\d{4})\))/$1/g;
A segunda instrução procura ((2012)) e retorna os seis caracteres intermediários; isto é, o (2012) . Quanto às "assinaturas comuns", que tal
$_ =~ s/ \[1080p\] MP4$//;
(Use \[ e \] para evitar que […] seja interpretado como um intervalo e $ para se referir ao final da string.