操作员元减 - Perl

数量

如果元减去加到一的数量或一串,其中包含 数,那么操作的结果是一些有相反的符号(除了一种情况与零, 关于它的下一部分)。

这里就是一个例子。 这个代码显示 -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";

结果这种代码取决于版本的Perl。 5.8,5.10,5.12显示第一线 -44,和第二 +44. 由于5.14第二线将 44 没有加。

而这里的代码如,通常具有3个不同的方式,取决于Perl版本:

▶ 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在屏幕上 将 -00.

行了,开始用字符 +-

在该情况下,如果适用的一元减线,开始一个加或 减,结果是一串的开始与另一个特征。 这里有一个例子:

▶ Run
#!/usr/bin/perl

use strict;
use warnings;

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

该程序将显示:

-asdf
+asdf

一串,不会开始与一个 +-

在这种情况下,Perl将试图 转换成一个字符串号码.

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

其他文章