Вы имеете в виду = ~, а не ~.~ является унитарным побитовым оператором отрицания.
Пара способов сделать это:
($value) = $list[1] =~ /(\d+)/;
Оба набора паренов важны;только в случае захвата скобок операция сопоставления возвращает фактическое содержимое, а не просто указание на успех, и только в контексте списка (предоставляется оператором list-assign ()=
).
Или общая идиомаскопировать, а затем изменить:
($value = $list[1]) =~ s/\D//;