Вы сформулировали запрос 2 способами:
- Получить все альфа-символы с передней части этих строк
- Найдите последний альфа-символ и отрубите все после
Хотя результат такой же, учитывая ваши примерные строки, я обнаружил, что стоит быть более осторожным с регулярными выражениями. Итак, я бы взял первый пункт выше как реальное требование и записал бы его как:
$str =~ s/^([a-z]*)[^a-z].*/$1/i;
Преимущество, на мой взгляд, заключается в том, что неожиданные строки (например, "7KENP989SD") должны приводить к пустой строке после замены, а не к чему-то неожиданному, например "7KENP". Конечно, может быть, это то, что вы хотели ...