2014-05-05 11 views
7

w Perlu, chciałbym móc to zrobić:Przełącznik niewrażliwy na wielkość liter jako zmienna?

$switches = "is"; 
$regexp = "\\d"; 
if ($string =~ m/$regexp/$switches) { 
do something... 
} 

Innymi słowy, w jaki sposób mogę to zrobić „$” opcjonalne przełączniki w czasie wykonywania? (użytkownik może wybierać spośród różnych opcji wyszukiwania)

+0

jakie przełączniki? masz na myśli argumenty wiersza polecenia? './foo.pl arg1 -arg2 = foo'? –

+0

@Marc B, Dopasuj flagi operatora – ikegami

Odpowiedz

11
if ($string =~ /(?$flags:$pattern)/) { 
    ... 
} 

Uwaga: to nie będzie działać, jeśli $pattern jest skompilowany wzorzec (tzn produkowane przez qr//) zamiast ciąg, ponieważ jest to flagi przekazywane do qr//, które mają wpływ na wzór skompilowany z qr//. Będziesz musiał przekazać flagi do qr// zamiast m//.

+0

Dzięki, @ikegami. Bardzo jasna odpowiedź. – sploiber

Powiązane problemy