Приведённый вами класс означает любой символ
кроме p и P, о чём свидетельствует ^ в начале символьного класса.
Безусловно выражение
$dialed_number=~s/[Pp]//g; прибьёт все p и P в строчке. А вдруг там проскочат другие не-цифры?
Кстати, как в логе АТС отображается нажатия всяких флашей или решёток при наборе?
Если уж хочется простоты то лучше
$dialed_number=~s/\D+//g;
Тогда
if ($dialed_number=~/(\d+)/) точно сработает

))