O operador unário menos - em Perl

O número de

No caso de unário menos se aplica a um número ou a linha que contém a o número, o resultado do trabalho é um número com противоположенным sinal (além da situação com o zero, sobre isso na próxima seção).

Aqui está um exemplo. Este código irá imprimir na tela -3 (sem erros e sem alerta-se a não:

▶ Run
#!/usr/bin/perl

use strict;
use warnings;

print -'3';

E isso -3, que nós recebemos é o número de -3, e não a linha '-3'.

Zero

Se aplicar unário menos ao número de 0 linha de comandos ou '0', o resultado será o número de 0.

Bareword

Se aplicar unário menos à identidade, o resultado será uma linha composta por menos e isso id. Neste exemplo, a variável $var acontece a linha '-asdf'. Há erros e avisos não.

▶ Run
#!/usr/bin/perl

use strict;
use warnings;

my $var = - asdf;

print $var;

Id deve começar com um caractere de sublinhado ou com a letra. Aqui está o código que usa figura como o primeiro caractere:

▶ Run
#!/usr/bin/perl

my $var = - 3asdf;

print $var;

Este código de erro:

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.

A linha com o número que começa com um caractere de + ou -

Aqui está um exemplo de código:

▶ Run
#!/usr/bin/perl

use strict;
use warnings;

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

O resultado desse código depende da versão do Perl. 5.8, 5.10, 5.12 exibe em primeira linha -44, e na segunda +44. A partir 5.14 a segunda linha será 44 já sem sinal de mais.

E aqui está um exemplo de código, geralmente tem 3 diferentes opções de trabalho, dependendo da versão do Perl:

▶ Run
#!/usr/bin/perl

use strict;
use warnings;

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

5.8, 5.10, 5.12 exibe -0, +0, Versão 5.14 e 5.16 exibirá dois a zero. E a partir da 5.18 na tela será -0 e 0.

A linha que começa com um caractere de + ou -

No caso de se aplicar unário menos a linha que começa com um sinal de mais ou subtração, o resultado será uma linha que começa com o outro símbolo. Aqui está um exemplo:

▶ Run
#!/usr/bin/perl

use strict;
use warnings;

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

O programa exibirá:

-asdf
+asdf

A linha, que não começa com um caractere de + ou -

Em tal situação, Perl, tentará converter a seqüência de caracteres em um número.

▶ Run
#!/usr/bin/perl

use strict;
use warnings;

print -'3.8asdf';

O resultado do trabalho, o código acima é um aviso e o número de -3.8:

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

A documentação oficial

Aqui está um trecho da saída do comando perldoc perlop pró unário menos:

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

Outros artigos