將 EXPR 解釋為八進位字串,並傳回對應的值。八進位字串包含八進位數字,且從 Perl 5.33.5 開始,可以選擇加上 0o
或 o
前綴。每個八進位數字前面都可以加上一個底線,這個底線會被忽略。(如果 EXPR 剛好以 0x
或 x
開頭,則會將其解釋為十六進位字串。如果 EXPR 以 0b
或 b
開頭,則會將其解釋為二進位字串。在所有這三種情況下,開頭的空白都會被忽略。)以下範例將以標準 Perl 符號處理十進位、二進位、八進位和十六進位
$val = oct($val) if $val =~ /^0/;
如果省略 EXPR,則會使用 $_
。若要反向操作(產生八進位數字),請使用 sprintf
或 printf
my $dec_perms = (stat("filename"))[2] & 07777;
my $oct_perm_str = sprintf "%o", $perms;
oct
函式通常用於將字串(例如 644
)轉換為檔案模式。雖然 Perl 會自動視需要將字串轉換為數字,但這個自動轉換假設為 10 進位。
開頭的空白會在不發出警告的情況下被忽略,任何尾隨的非數字(例如小數點)也會被忽略(oct
只處理非負整數,不處理負整數或浮點數)。