यहां किनोपिको के उत्तर और eval का संयोजन है।
eval
का उपयोग नियंत्रित और रखरखाव फैशन में लुकअप टेबल उत्पन्न करने के लिए किया जाता है, और एक लुकअप टेबल का उपयोग सभी को बचाने के लिए किया जाता है .. elsif .. elsif जो देखने के लिए बहुत मजेदार नहीं है।
(बहुत हल्के से परीक्षण किया)
my @stuff = (
{
search => "this",
replace => "that",
modifier => "g",
},
{
search => "ono",
replace => "wendy",
modifier => "i",
}
);
$_ = "this ono boo this\n";
my @modifiers = qw{m s i x g e};
my $s_lookup = {};
foreach my $modifier (@modifiers) {
$s_lookup->{$modifier} = eval " sub { s/\$_[0]/\$_[1]/$modifier } ";
}
for my $h (@stuff) {
$s_lookup->{$h->{modifier}}->($h->{search},$h->{replace});
}
print;
इस जरूरत को पूरी तरह से उपयोगी हो करने के लिए: संभव संशोधक की
- संयोजन
लुकअप तालिका पर
- तरह समारोह तो 'एमएसआई' संयोजन और 'गलत संयोजन एक ही कुंजी पर जाएगा।
कुछ संशोधक को रेगेक्स के अंदर '(? संशोधक: पैटर्न)' के रूप में आपूर्ति की जा सकती है, लेकिन ऐसी चीजें नहीं जो पूरी चीज को/g या/e जैसे प्रभावित करती हैं। यह उन लोगों में से एक है "आप ऐसा क्यों कर रहे हैं" क्षण। यदि आपने हमें बताया कि यह क्या है, तो हम ऊंट के बाल (और सुरक्षा छेद खोलने) के बजाय ब्रश करने के बजाए एक आसान तरीके से आ सकते हैं। – Schwern
@Schwern: और यदि आप अपने ऊंट में छेद खोलते हैं तो यह सबसे अप्रिय है – Borodin