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 .