Это может быть сделано с помощью переменной длины, что недопустимо.Но просмотр переменной длины эквивалентен прогнозу переменной длины на обратной стороне ввода, поэтому у нас есть этот трюк:
reverse
строка, удалите символы, используя просмотрвперед и reverse
снова
$t = reverse $s;
$t =~ s/(.)(?=.*\1)//sg;
$s = reverse $t;
Если у вас есть Perl 5.14 или выше и вы можете использовать модификатор /r
для подстановок, вы получите
$s = reverse( reverse($s) =~ s/(.)(?=.*\1)//grs );