ऑपरेटर एकल शून्य से - पर्ल में

संख्या

यदि एकल शून्य से लागू किया जाता है एक नंबर करने के लिए या करने के लिए एक स्ट्रिंग में शामिल है जो संख्या है, तो आपरेशन के परिणाम एक संख्या के साथ एक विपरीत हस्ताक्षर के लिए छोड़कर (स्थिति शून्य के साथ, इसके बारे में अगले भाग में).

यहाँ एक उदाहरण है । इस कोड को प्रदर्शित करेगा -3 (कोई त्रुटि और कोई चेतावनी नहीं होगा):

▶ Run
#!/usr/bin/perl

use strict;
use warnings;

print -'3';

और यह -3, जो हमें प्राप्त हुआ है — इस संख्या के -3नहीं, लाइन '-3'.

शून्य

यदि आप को लागू एकल शून्य करने के लिए संख्या 0 या पंक्ति '0', परिणाम संख्या हो जाएगा 0.

Bareword

यदि आप को लागू एकल शून्य करने के लिए पहचानकर्ता, परिणाम होगा एक स्ट्रिंग से मिलकर एक शून्य और इस आईडी. इस उदाहरण में, चर $var है लाइन '-asdf'. कोई त्रुटि है और चेतावनी नहीं.

▶ Run
#!/usr/bin/perl

use strict;
use warnings;

my $var = - asdf;

print $var;

पहचानकर्ता के साथ शुरू करना चाहिए एक अंडरस्कोर या एक पत्र के साथ. यहाँ कोड का उपयोग करता है कि अंकों पहली चरित्र के रूप में:

▶ Run
#!/usr/bin/perl

my $var = - 3asdf;

print $var;

इस कोड उत्पन्न होगा एक त्रुटि:

Bareword found where operator expected at script.pl line 3, near "3asdf"
    (Missing operator before asdf?)
syntax error at script.pl line 3, near "3asdf"
Execution of script.pl aborted due to compilation errors.

एक स्ट्रिंग एक संख्या के साथ शुरू होता है, जो चरित्र के साथ + या -

यहाँ है एक उदाहरण कोड:

▶ Run
#!/usr/bin/perl

use strict;
use warnings;

print -'+44', "\n";
print -'-44', "\n";

परिणाम के इस कोड के संस्करण पर निर्भर करता पर्ल. 5.8, 5.10, 5.12 प्रदर्शित करता है पहली पंक्ति -44, और दूसरा +44. के बाद से 5.14 दूसरी लाइन होगा 44 के बिना से अधिक है ।

और यहाँ एक कोड उदाहरण के लिए, आम तौर पर 3 अलग अलग तरीके पर निर्भर करता है, पर्ल संस्करण:

▶ Run
#!/usr/bin/perl

use strict;
use warnings;

print -'+0', "\n";
print -'-0', "\n";

5.8, 5.10, 5.12 प्रदर्शित करता है -0, +0, संस्करण 5.14 और 5.16 प्रदर्शित करता है, दो शून्य है. और के बाद से 5.18 स्क्रीन पर जाएगा -0 और 0.

लाइन शुरू होता है कि चरित्र के साथ + या -

मामले में यदि आप को लागू एकल शून्य से लाइन के लिए शुरू होता है कि एक प्लस के साथ या शून्य से, परिणाम एक स्ट्रिंग शुरू होता है कि एक और चरित्र के साथ. यहाँ एक उदाहरण है:

▶ Run
#!/usr/bin/perl

use strict;
use warnings;

print -"+asdf\n";
print -"-asdf\n";

कार्यक्रम प्रदर्शित करेगा:

-asdf
+asdf

एक स्ट्रिंग है कि शुरू नहीं करता है के साथ एक + या -

इस स्थिति में, पर्ल की कोशिश करेंगे करने के लिए एक स्ट्रिंग परिवर्तित करने के लिए एक नंबर.

▶ Run
#!/usr/bin/perl

use strict;
use warnings;

print -'3.8asdf';

परिणाम कोड के ऊपर एक चेतावनी है और संख्या -3.8:

Argument "3.8asdf" isn't numeric in negation (-) at script.pl line 6.
-3.8

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

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

    Unary "-" performs arithmetic negation if the operand is numeric,
    including any string that looks like a number. If the operand is an
    identifier, a string consisting of a minus sign concatenated with the
    identifier is returned. Otherwise, if the string starts with a plus or
    minus, a string starting with the opposite sign is returned. One effect of
    these rules is that "-bareword" is equivalent to the string "-bareword".
    If, however, the string begins with a non-alphabetic character (excluding
    "+" or "-"), Perl will attempt to convert the string to a numeric, and the
    arithmetic negation is performed. If the string cannot be cleanly
    converted to a numeric, Perl will give the warning Argument "the string"
    isn't numeric in negation (-) at ....

अन्य लेख