ऑपरेटर => (वसा अल्पविराम) पर्ल में

ऑपरेटर => प्रयोग किया जाता है करने के लिए अलग-अलग मूल्यों. यह सबसे अधिक इस्तेमाल किया के वर्णन में पर्ल हैश. यहाँ एक उदाहरण है:

▶ Run
#!/usr/bin/perl

my %h = (
    a => 1,
    b => 2,
);

ऑपरेटर => है वाक्यात्मक चीनी । इस ऑपरेटर का प्रयोग किया जाता है के बजाय अल्पविराम ऑपरेटर ,, लेकिन विपरीत अल्पविराम ऑपरेटर, यह बाएँ ऑपरेंड के रूप में एक स्ट्रिंग के बिना इसे बंद करने के लिए उद्धरण चिह्नों में. यहाँ एक बहुत ही इसी तरह के विवरण के साथ एक Perl हैश, लेकिन का उपयोग कर एक अल्पविराम:

▶ Run
#!/usr/bin/perl

my %h = (
    'a', 1,
    'b', 2,
);

के वर्णन में हैश हमेशा बेहतर है का उपयोग करने के लिए ऑपरेटर => को अलग करने के लिए कुंजी-मूल्य के बाद से इस का उपयोग करें एक और अधिक स्पष्ट कोड ।

के बजाय अल्पविराम ऑपरेटर , तुम हमेशा उपयोग कर सकते हैं => (नहीं बल्कि इसके विपरीत). लेकिन हमेशा ऐसा नहीं कर रही लायक है. यहाँ है एक और विवरण के हैश काम करता है, जो सिर्फ पिछले दो तरह, लेकिन नहीं की जरूरत है:

▶ Run
#!/usr/bin/perl

my %h = (
    a => 1 =>
    b => 2 =>
);

ऑपरेटर => अक्सर कहा जाता है "वसा अल्पविराम", क्योंकि यह की तरह कार्य करता है एक अल्पविराम (कुछ) इसके अलावा, लेकिन दो अक्षरों के होते हैं एक के बजाय.

बाएं संकार्य

ऑपरेटर => समझता है एक स्ट्रिंग के बाएँ ऑपरेंड केवल यदि निम्न स्थितियाँ सत्य हैं:

  • बाएं संकार्य के साथ शुरू होता है एक पत्र या प्रतीक _
  • और बाएं संकार्य शामिल कर सकते हैं केवल अक्षर, संख्या और प्रतीकों _

इसलिए इस कोड काम नहीं करेगा क्योंकि (बाएं संकार्य एक प्रतीक है -):

▶ Run
#!/usr/bin/perl

my %h = (
   some-key => 3, # error!
);

आपको चाहिए स्पष्ट रूप से में प्रवेश some-key उद्धृत: 'some-key'.

उपयोग में नहीं है, हैश

ऑपरेटर => पहली जगह में उपयोग करने के लिए है का वर्णन करने के लिए मूल्य जोड़े में हैश. यह की तरह लग रहा है तीर और जब में इस्तेमाल किया हैश, यह बहुत कार्बनिक लग रहा है — कुंजी अंक के लिए एक मूल्य है. लेकिन ऑपरेटर => इस्तेमाल किया जा सकता है न केवल हैश, लेकिन आम तौर पर किसी भी सूची (लेकिन हमेशा नहीं यह समझ में आता है). यहाँ है एक उदाहरण का उपयोग इस ऑपरेटर की सरणी में:

▶ Run
#!/usr/bin/perl

my @arr = ( one => two => 'three' );

इस उदाहरण में, बनाया गया था एक सरणी है जो 3 पंक्तियों । क्योंकि ऑपरेटर इस्तेमाल किया गया है =>, बाएं संकार्य नहीं किया जा सकता है उद्धरण चिह्नों में परिबद्ध. इसलिए, पहली दो पंक्तियों में इस्तेमाल कर रहे हैं उद्धरण चिह्नों के बिना. सही पर संकार्य के इस जादू लागू नहीं होता है, तो तीसरी लाइन के लिए किया था हो सकता है उद्धरण में संलग्न.

इस उदाहरण में बेहतर होगा करने के लिए लिखने का उपयोग कर ऑपरेटर qw:

▶ Run
#!/usr/bin/perl

my @arr = qw(one two three);

ऑपरेटर की जरूरत है लिखने के लिए एक साथ

ऑपरेटर => दो अक्षरों के होते हैं और उन दो अक्षरों का होना चाहिए एक दूसरे के बगल में. यह असंभव है करने के लिए जगह उन दोनों के बीच अंतरिक्ष. उस मामले में यदि आप लिखने के = >, यह एक गलती होगी. यहाँ का एक उदाहरण है गलत कोड:

▶ Run
#!/usr/bin/perl

my %h = (
    a = > 1, # error!
);

यदि आप इस कोड को चलाने के लिए, यह स्क्रीन पर दिखाई देगा:

syntax error at script.pl line 4, near "= >"
Execution of script.pl aborted due to compilation errors.

सरकारी दस्तावेज

यहाँ एक टुकड़ा के उत्पादन perldoc perlop के बारे में ऑपरेटर =>:

    The "=>" operator (sometimes pronounced "fat comma") is a synonym for the
    comma except that it causes a word on its left to be interpreted as a
    string if it begins with a letter or underscore and is composed only of
    letters, digits and underscores. This includes operands that might
    otherwise be interpreted as operators, constants, single number v-strings
    or function calls. If in doubt about this behavior, the left operand can
    be quoted explicitly.

    Otherwise, the "=>" operator behaves exactly as the comma operator or list
    argument separator, according to context.

    For example:

        use constant FOO => "something";

        my %h = ( FOO => 23 );

    is equivalent to:

        my %h = ("FOO", 23);

    It is NOT:

        my %h = ("something", 23);

    The "=>" operator is helpful in documenting the correspondence between
    keys and values in hashes, and other paired elements in lists.

        %hash = ( $key => $value );
        login( $username => $password );

    The special quoting behavior ignores precedence, and hence may apply to
    part of the left operand:

        print time.shift => "bbb";

    That example prints something like "1314363215shiftbbb", because the "=>"
    implicitly quotes the "shift" immediately on its left, ignoring the fact
    that "time.shift" is the entire left operand.

अन्य लेख