Funktion oct() in Perl

In der Programmiersprache Perl gibt es die eingebaute Funktion oct().

Funktion oct() konvertiert eine Zahl aus dem oktal-Zahlensystem in десятеричную. Aber noch diese Funktion kann die Umwandlung einer Zahl in десятеричную Zahlenbasis und der binary und der hexadezimal.

Hier ist ein Beispiel:

▶ Run
#!/usr/bin/perl

use feature qw(say);

say oct('10'); # 8
say oct('0x10'); # 16
say oct('0b10'); # 2

Argumente

Wenn die Funktion oct nicht übertragen, keine Argumente, wird die Funktion arbeitet mit дефолтной Variable $_:

▶ Run
#!/usr/bin/perl

$_ = 123;

print oct(); # 83

In diesem Fall, wenn in der Variablen $_ befindet sich undef verwendet und use warnings;, dann wird die Warnung:

▶ Run
#!/usr/bin/perl

use strict;
use warnings;

my $dec = oct();
Use of uninitialized value $_ in oct at script.pl line 6.

Standard-Funktion verwenden oct() ist ein argument übergeben.

Wenn an die Funktion übergeben oct() mehr als ein argument, dann wird der Fehler und die Codeausführung gestoppt wird.

Too many arguments for oct at script.pl line 3, near "2)"
Execution of script.pl aborted due to compilation errors.

Wenn Sie mehrere Werte zu konvertieren, dann können Sie map:

▶ Run
#!/usr/bin/perl

use Data::Dumper;

my @oct = (100, 200, 300);

my @dec = map { oct } @oct;

warn Dumper \@dec;

Wenn die Funktion übergeben die Zeile, die beginnt mit 0x oder 0X, wird die Funktion oct() nimmt diese Zeile als Zahl in hexadezimal und gibt diese Zahl ist im Dezimalsystem.

Und wenn die Zeile beginnt mit 0b oder OB, dann ord() hält diese Zeile Zahl im Binärmodus und es gibt auch десятеричное Leistung.

In den Fällen, in oct() übertragen Sie die Zahl in dem Zeichen, das nicht gehört in den Bereich der Ziffern von 0 bis 7, dann oct() zurück 0, aber bei eingeschalteten use warnings; werden eine Warnung:

▶ Run
#!/usr/bin/perl

use strict;
use warnings;
use feature qw(say);

say oct(90210);
Illegal octal digit '9' ignored at script.pl line 7.
0

Funktion oct() nicht in der Lage, arbeiten mit gebrochenen Werten:

▶ Run
#!/usr/bin/perl

use strict;
use warnings;
use feature qw(say);

say oct('10.7');
say oct('0X10.F');
say oct('0B10.11');
8
16
2
Illegal hexadecimal digit '.' ignored at script.pl line 8.
Illegal binary digit '.' ignored at script.pl line 9.

Der Rückgabewert

Funktion oct() immer eine Zahl zurück.

Die offizielle Dokumentation

Hier ist die Ausgabe des Befehls perldoc -f oct:

    oct EXPR
    oct     Interprets EXPR as an octal string and returns the corresponding
            value. (If EXPR happens to start off with "0x", interprets it as
            a hex string. If EXPR starts off with "0b", it is interpreted as
            a binary string. Leading whitespace is ignored in all three
            cases.) The following will handle decimal, binary, octal, and
            hex in standard Perl notation:

                $val = oct($val) if $val =~ /^0/;

            If EXPR is omitted, uses $_. To go the other way (produce a
            number in octal), use "sprintf" or "printf":

                my $dec_perms = (stat("filename"))[2] & 07777;
                my $oct_perm_str = sprintf "%o", $perms;

            The "oct" function is commonly used when a string such as 644
            needs to be converted into a file mode, for example. Although
            Perl automatically converts strings into numbers as needed, this
            automatic conversion assumes base 10.

            Leading white space is ignored without warning, as too are any
            trailing non-digits, such as a decimal point ("oct" only handles
            non-negative integers, not negative integers or floating point).

Verwandte Themen

Andere Artikel