2012-05-01 33 views
8

संभव डुप्लिकेट:
What does =~ do in Perl?क्या करता = ~ पर्ल में मतलब

एक पर्ल कार्यक्रम मैं (namly plutil.pl) की जांच कर रहा हूँ में, मैं =~ का एक बहुत XML पार्सर पर देखते हैं हिस्से। उदाहरण के लिए, यहाँ समारोह UnfixXMLString (1.7 पर 167 लिए लाइनों 159 ($VERSION गलत तरीके के रूप में "1.5" घोषित))

sub UnfixXMLString { 
    my ($s) = @_; 

    $s =~ s/&lt;/</g; 
    $s =~ s/&gt;/>/g; 
    $s =~ s/&amp;/&/g; 

    return $s; 
} 

मैं क्या बता सकते हैं, इसके सी प्रोटोटाइप होगा (सी-तरह) string UnfixXMLString(string s) है , और यह पैरामीटर (s) पर =~ ऑपरेटर का उपयोग करता है और फिर संशोधित स्ट्रिंग देता है, लेकिन यह क्या कर रहा है?

उत्तर

17

=~ पर्ल binding operator है। यह आमतौर पर एक स्ट्रिंग के लिए एक नियमित अभिव्यक्ति लागू करने के लिए प्रयोग किया जाता है;

if ($string =~ m/pattern/) { 

या एक स्ट्रिंग से घटकों को निकालने के लिए:

my ($first, $rest) = $string =~ m{^(\w+):(.*)$}; 

या एक प्रतिस्थापन लागू करने के लिए:

$string =~ s/foo/bar/; 
+4

अधिक विशेष रूप से, इसका उपयोग स्केलर में 'm //', 's ///', या 'y ///' ('tr ///') ऑपरेटर को बांधने के लिए किया जाता है। Regexes पिछले एक के लिए शामिल नहीं हैं। इसे '$ var = ~ $ re' के रूप में भी उपयोग किया जा सकता है, जो' var var = ~/$ re/'जैसा ही है। – tchrist

3

= ~ है उदाहरण के लिए, अगर एक स्ट्रिंग एक नमूने का मिलान परीक्षण करने के लिए पर्ल बाध्यकारी ऑपरेटर, और यह निर्धारित करने के लिए उपयोग किया जा सकता है कि एक नियमित अभिव्यक्ति मिलान हुआ (सत्य या गलत)

$sentence="The river flows slowly."; 
if($sentence =~ /river/) 
{ 
    print "Matched river.\n"; 
} 
else 
{ 
    print"Did not match river.\n"; 
} 
संबंधित मुद्दे