my $c= 'ODD_`!"£$%^&*(){}][@@;:/?.>,<|\'
Я хочу заменить их всех на специальные символы
как добиться этого быстрее ...
my $c= 'ODD_\`\!\"\£\$\%\^\&\*\(\)\{\}\]\[\@\,\;\:\/\?\.\>\,\<\|\\'
Использование quotemeta:
quotemeta
#!/usr/bin/env perl use warnings; use strict; my $c = 'ODD_`!"£$%^&*(){}][@@;:/?.>,<|\\'; print quotemeta($c), "\n";
Обратите внимание, что ваше определение $c не будет скомпилировано, поскольку вы должны экранировать \ даже в одиночных кавычках.
$c
\
Хотя я думаю, что ответ Синан верен для того, что, как я полагаю, вам нужно (на основе вашего списка символов для выхода), для полноты я добавлю модуль URI::Escape, который экранирует метасимволы в HTML текст. Кажется, что у него есть возможность указать небезопасные символы, поэтому, возможно, он тоже может вам помочь.
URI::Escape