my $mapped_from = ($num_phones_in == 60)? = $1 : $2;
Isso é um erro de sintaxe. O test ? val_true : val_false é o "operador ternário" , um formulário em linha de uma instrução if-else . Se test for true, ele será avaliado como val_true e se test for falso, ele será avaliado como val_false part. O ponto de interrogação não tem nada a ver com o parêntese. Mas = $1 não é uma expressão válida.
Sem o = extra, ($num_phones_in == 60)? $1 : $2; verificaria se $num_phones_in é sessenta e devolve $1 ou $2 em conformidade.
$1 e $2 (etc.) são variáveis que se referem ao conteúdo dos grupos de captura na regex anterior. Se você fez "afoob" =~ /a(.*)b/ , então $1 conteria foo . Veja Variáveis relacionadas a expressões regulares no perlvar .