L'operatore unario meno - in Perl

Il numero di

Nel caso in cui meno unario si applica al numero o alla riga che contiene il numero, quindi il risultato del lavoro è un numero con противоположенным segno (tranne situazione con zero, pro è la sezione successiva).

Ecco un esempio. Questo codice visualizza -3 (nessun errore e nessun avviso non sarà):

▶ Run
#!/usr/bin/perl

use strict;
use warnings;

print -'3';

E questo -3, che abbiamo ricevuto — questo è esattamente il numero di -3, e non una stringa '-3'.

Zero

Se si applica meno unario al numero 0 o riga '0', il risultato sarà il numero di 0.

Bareword

Se si applica meno unario all'id, il risultato è una stringa composta da meno e questo id. In questo esempio, la variabile $var si scopre stringa '-asdf'. Ci sono errori e avviso no.

▶ Run
#!/usr/bin/perl

use strict;
use warnings;

my $var = - asdf;

print $var;

L'id deve iniziare con un carattere di sottolineatura o con le lettere. Ecco il codice che utilizza figura come primo carattere:

▶ Run
#!/usr/bin/perl

my $var = - 3asdf;

print $var;

Questo codice genera un errore:

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.

Una stringa con un numero che inizia con il carattere + o -

Ecco un esempio di codice:

▶ Run
#!/usr/bin/perl

use strict;
use warnings;

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

Il risultato del lavoro di questo codice dipende dalla versione di Perl. 5.8, 5.10, 5.12, verrà visualizzato nella prima riga -44, mentre la seconda +44. A partire dal 5.14 nella seconda riga sarà 44 già senza il segno più.

Ed ecco un esempio di codice, in generale ha 3 differenti opzioni di lavoro, a seconda della versione di Perl:

▶ Run
#!/usr/bin/perl

use strict;
use warnings;

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

5.8, 5.10, 5.12 visualizza -0, +0, Versione 5.14 e 5.16 visualizza il due a zero. E a partire dal 5.18 sullo schermo sarà -0 e 0.

La riga che inizia con il carattere + o -

Nel caso in cui applicare meno unario alla riga che inizia con il segno più o meno, il risultato è una stringa che inizia con un altro simbolo. Ecco un esempio:

▶ Run
#!/usr/bin/perl

use strict;
use warnings;

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

Il programma visualizzerà sullo schermo:

-asdf
+asdf

La riga che inizia con il carattere + o -

In tale situazione, Perl cercherà di convertire una stringa in un numero.

▶ Run
#!/usr/bin/perl

use strict;
use warnings;

print -'3.8asdf';

Il risultato del lavoro di codice di cui sopra è un messaggio di avviso e il numero di -3.8:

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

La documentazione ufficiale di

Ecco un frammento di output del comando perldoc perlop pro meno unario:

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

Altri articoli