Unäre minus-Operator - in Perl

Die Zahl der

Im Falle unärer minus gilt für die Anzahl oder die Zeile mit dem eine Zahl, die das Ergebnis der Arbeit ist eine Zahl mit противоположенным Zeichen (außer null, dazu im nächsten Abschnitt).

Hier ist ein Beispiel. Dieser Code zeigt -3 (keine Fehler und keine Warnung nicht):

▶ Run
#!/usr/bin/perl

use strict;
use warnings;

print -'3';

Wobei es -3, die wir erhalten haben — das ist genau die Anzahl der -3und nicht Zeile '-3'.

Null

Wenn Sie den unären minus zu den 0 oder Zeile '0', ist das Ergebnis die Anzahl der 0.

Bareword

Wenn Sie den unären minus id, ist das Ergebnis eine Zeichenfolge bestehend aus Instrumentals und dieser id. In diesem Beispiel wird in der Variablen $var erweist sich als String '-asdf'. Keine Fehler und keine Warnung.

▶ Run
#!/usr/bin/perl

use strict;
use warnings;

my $var = - asdf;

print $var;

Der Bezeichner beginnt mit einem Unterstrich oder mit einem Buchstaben. Hier ist der Code, der verwendet Ziffer als erstes Zeichen:

▶ Run
#!/usr/bin/perl

my $var = - 3asdf;

print $var;

Dieser Code führt zu einem Fehler:

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.

Zeile mit der Nummer, die beginnt mit dem Zeichen + oder -

Hier ist der Beispielcode:

▶ Run
#!/usr/bin/perl

use strict;
use warnings;

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

Das Ergebnis dieses Codes ist abhängig von der Version von Perl. 5.8, 5.10, 5.12 zeigt in der ersten Zeile -44, und in der zweiten +44. Ab 5.14 in der zweiten Zeile wird 44 bereits ohne Plus.

Und hier ist ein Beispielcode, hat in der Regel 3 verschiedene Möglichkeiten, um zu arbeiten, je nach Version von Perl:

▶ Run
#!/usr/bin/perl

use strict;
use warnings;

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

5.8, 5.10, 5.12 zeigt -0, +0, Version 5.14 und 5.16 zeigt zwei Nullen. Und ab 5.18 auf dem Bildschirm wird -0 und 0.

Die Zeichenfolge beginnt mit dem Zeichen + oder -

In dem Fall anwenden, wenn unäre minus der Zeile, die beginnt mit dem Pluszeichen oder minus, ist das Ergebnis eine Zeichenfolge, die beginnt mit einem anderen Zeichen. Hier ist ein Beispiel:

▶ Run
#!/usr/bin/perl

use strict;
use warnings;

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

Das Programm zeigt auf dem Bildschirm:

-asdf
+asdf

Die Zeichenfolge beginnt mit dem Zeichen + oder -

In einer solchen Situation Perl versucht, String in eine Zahl umwandeln.

▶ Run
#!/usr/bin/perl

use strict;
use warnings;

print -'3.8asdf';

Das Ergebnis der Arbeit der Code oben ist eine Warnung und die Anzahl der -3.8:

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

Die offizielle Dokumentation

Hier ist ein Ausschnitt der Ausgabe des Befehls perldoc perlop über unäre minus:

    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 ....

Andere Artikel