$text_to_search = "example text with [foo] and more";
$search_string = "[foo]";
if($text_to_search =~ m/$search_string/) print "wee";
Si prega di osservare il codice sopra. Per qualche motivo mi piacerebbe trovare il testo "[foo]" nella variabile $ text_to_search e stampare "wee" se lo trovo. Per fare questo, dovrei assicurarmi che [e] sia sostituito con [e] per far sì che Perl lo tratti come caratteri invece che come operatori.Perl espressione regolare (utilizzando variabile come stringa di ricerca con caratteri operatore perl inclusi)
Domanda: Come posso fare questo senza dover sostituire prima [
e ]
con \[
e \]
utilizzando un'espressione s///
?
direi prendere l'abitudine di utilizzare il qr // costrutto per le espressioni regolari e sfuggire caratteri speciali regex se è necessario letterale. Quotemeta citerà TUTTI i caratteri speciali regex. Se vuoi semplicemente trovare una stringa letterale in un'altra, usa invece index(). – sln