Вы можете использовать простые одинарные кавычки, которые в Perl НЕ будут интерполировать значение внутри.Тогда ваш '$' будет передан как просто часть строки вместо того, чтобы пытаться интерполировать значение для переменной.
$Collection1->update({'_id' => $id}, { '$set' => {'Title' => $title} }, false );
Обратите внимание, что в приведенном выше примере я также изменил ваши двойные кавычки вокруг имен полей набыть одинарные кавычки также.В Perl рекомендуется использовать одинарные кавычки, когда вы имеете в виду строковый литерал, и двойные кавычки, когда вы хотите заменить значение переменной.Кроме того, вы не хотите (или не должны) экранировать '$' перед '$ id', поскольку вы хотите, чтобы переменная id заменялась в вызове обновления.
в "qw() "оператор Пол показал то же самое.См. «Цитировать и цитировать операторов» в разделе perldoc perlop.
отредактированный ответ, чтобы отразить другие комментарии о неправильных хэш-нотациях.