Điều hành phép toán đơn trừ - trong Perl

Số

Nếu phép toán đơn trừ được áp dụng cho một số hoặc một chuỗi đó chứa số sau đó các hoạt động quả là một số có, một đối diện đừng (ngoại trừ một tình huống không, về nó trong phần tiếp theo).

Đây là một ví dụ. Mã này sẽ hiển thị -3 (không có lỗi và không cảnh báo sẽ không):

▶ Run
#!/usr/bin/perl

use strict;
use warnings;

print -'3';

Và nó -3, mà chúng tôi đã nhận được — đây là số -3, không dòng '-3'.

Zero

Nếu bạn áp dụng các phép toán đơn trừ vào số 0 hoặc hàng '0', kết quả sẽ là số 0.

Bareword

Nếu bạn áp dụng các phép toán đơn trừ để nhận diện, kết quả sẽ là một chuỗi bao gồm một trừ và này ID. Trong ví dụ này, biến $var là dòng '-asdf'. Không có lỗi và cảnh báo không.

▶ Run
#!/usr/bin/perl

use strict;
use warnings;

my $var = - asdf;

print $var;

Sự nhận dạng phải bắt đầu với một gạch dưới hoặc với một lá thư. Đây là những mã đó, sử dụng chữ như nhân vật đầu tiên:

▶ Run
#!/usr/bin/perl

my $var = - 3asdf;

print $var;

Mã này sẽ tạo ra một đề:

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.

Một chuỗi với một số đó bắt đầu với những nhân vật + hoặc -

Đây là một ví dụ mã:

▶ Run
#!/usr/bin/perl

use strict;
use warnings;

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

Các kết quả của mã này phụ thuộc vào phiên bản của Perl. 5.8, 5.10, 5.12 hiển thị các dòng đầu tiên -44, và lần thứ hai +44. Kể từ khi 5.14 dòng thứ hai sẽ 44 mà không cần thêm.

Và đây là một ví dụ mã thường có 3 những cách khác nhau, tùy thuộc vào bản Perl:

▶ Run
#!/usr/bin/perl

use strict;
use warnings;

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

5.8, 5.10, 5.12 hiển thị -0, +0, phiên Bản 5.14 và 5.16 hiển thị hai số không. Và kể từ khi 5.18 trên màn hình sẽ -00.

Các dòng bắt đầu với các nhân vật + hoặc -

Trong trường hợp nếu bạn áp dụng các phép toán đơn trừ các dòng bắt đầu với một cộng hay trừ, kết quả là một chuỗi đó bắt đầu với một nhân vật khác. Đây là một ví dụ:

▶ Run
#!/usr/bin/perl

use strict;
use warnings;

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

Chương trình sẽ hiển thị:

-asdf
+asdf

Một chuỗi mà không bắt đầu với một + hoặc -

Trong tình huống này, Perl sẽ cố gắng để chuyển đổi một chuỗi một số.

▶ Run
#!/usr/bin/perl

use strict;
use warnings;

print -'3.8asdf';

Kết quả của những mã trên đây là một cảnh báo và số -3.8:

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

Tài liệu chính thức

Đây là một đoạn trong đầu ra perldoc perlop về phép toán đơn trừ:

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

Các bài viết khác