Funzione oct() in Perl

Nel linguaggio di programmazione Perl ci sono built-in funzione di oct().

Funzione oct() converte un numero da un sistema di numerazione ottale in десятеричную. Ma ancora questa funzione è in grado di convertire i numeri in десятеричную sistema numerico e da binario e esadecimale.

Ecco un esempio:

▶ Run
#!/usr/bin/perl

use feature qw(say);

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

Argomenti

Nel caso in cui la funzione oct non trasmessi gli argomenti, la funzione lavora con di default della variabile $_:

▶ Run
#!/usr/bin/perl

$_ = 123;

print oct(); # 83

Nel caso in cui in una variabile $_ si trova undef e viene utilizzato use warnings;, ci sarà un avvertimento:

▶ Run
#!/usr/bin/perl

use strict;
use warnings;

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

L'uso standard di funzioni oct() è darle un argomento.

Se trasferire la funzione oct() è più di un argomento, quello è un errore e l'esecuzione di codice verrà interrotta.

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

Se si desidera convertire più valori, è possibile utilizzare map:

▶ Run
#!/usr/bin/perl

use Data::Dumper;

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

my @dec = map { oct } @oct;

warn Dumper \@dec;

Se la funzione è trasmessa una stringa che inizia con 0x o 0X, la funzione oct() percepisce questa stringa come un numero in esadecimale e restituisce questo numero in decimale.

E se la stringa inizia con 0b o OB, poi ord() ritiene questa riga numero nel sistema numerico binario e restituisce anche il suo десятеричное prestazione.

Nel caso in cui l' oct() di trasferire il numero in cui c'è un personaggio che non entra in un intervallo di numeri da 0 a 7, poi oct() restituirà 0, ma quando sono use warnings; è un avvertimento:

▶ 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

Funzione oct() non è in grado di lavorare con i decimali valori:

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

Il valore restituito

Funzione oct() restituisce sempre il numero.

La documentazione ufficiale di

Ecco l'output del comando 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).

Temi correlati

Altri articoli