內容

名稱

POSIX - Perl 介面至 IEEE Std 1003.1

語法

    use POSIX ();
    use POSIX qw(setsid);
    use POSIX qw(:errno_h :fcntl_h);

    printf "EINTR is %d\n", EINTR;

    my $sess_id = POSIX::setsid();

    my $fd = POSIX::open($path, O_CREAT|O_EXCL|O_WRONLY, 0644);
	# note: that's a filedescriptor, *NOT* a filehandle

說明

POSIX 模組允許您存取所有(或幾乎所有)標準 POSIX 1003.1 識別碼。其中許多識別碼已提供 Perl 介面。

本文件提供 POSIX 模組中可用功能的簡要清單。請參閱作業系統的手冊頁面以取得大多數功能的一般資訊。請參閱 perlfunc 以取得標示為與 Perl 內建函式相同或幾乎相同的函式。

第一部分說明 1003.1 規範中的 POSIX 函式。第二部分說明一些類別,包括訊號物件、TTY 物件和其他雜項物件。其餘部分列出各種常數和巨集,其組織大致遵循 IEEE Std 1003.1b-1993。

符號 [C99] 表示在 ISO/IEC 9899:1999 版本的 C 語言標準中新增的函式。如果您的系統遵循較早的標準,某些函式可能無法使用。嘗試使用任何遺失的函式將導致執行時期發生致命錯誤訊息。

注意事項

預設會匯出所有內容(少數例外情況)。這是個不幸的向下相容性功能,而且強烈不建議使用。您應該防止匯出(透過說 use POSIX ();,像往常一樣),然後使用完全限定名稱(例如 POSIX::SEEK_END),或提供明確的匯入清單。如果您不執行這兩個動作,而選擇預設值(例如 use POSIX;),您將匯入數百個符號到您的命名空間。

一些函式未實作,因為它們是 C 語言專屬的。如果您嘗試呼叫這些函式,它們會印出訊息,告知您它們未實作,並建議使用 Perl 等效函式(如果存在)。例如,嘗試存取 setjmp() 呼叫會引發訊息「setjmp() 為 C 語言專屬:請改用 eval {}」。

此外,一些惡劣的供應商會宣稱符合 1003.1,但事實上並非如此:它們無法通過 PCTS(POSIX 相容性測試套件)。例如,一個供應商可能未定義 EDEADLK,或 open(2) 設定的 errno 值語意可能不太正確。Perl 沒有嘗試驗證 POSIX 相容性。這表示您目前可以成功說「use POSIX」,然後在程式中稍後發現您的供應商很鬆懈,畢竟沒有可用的 ICANON 巨集。這可能會被解釋為錯誤。

函數

_exit

這與 C 函數 _exit() 相同。它會立即結束程式,這表示緩衝 I/O 不會清除,以及其他事項。

請注意,在使用執行緒和 Linux 時,這不是結束執行緒的良好方式,因為在 Linux 中,處理程序和執行緒是相同的事物(注意:雖然這是 2003 年初的情況,但目前有專案正在進行,以讓 Linux 中的執行緒具有更多 POSIX 語意)。如果您不想從執行緒傳回,請分離執行緒。

abort

這與 C 函數 abort() 相同。它會終止處理程序,並傳送 SIGABRT 訊號,除非被訊號處理常式捕捉,或處理常式未正常傳回(例如,它會執行 longjmp)。

abs

這與 Perl 內建的 abs() 函數相同,傳回其數字引數的絕對值(但 POSIX::abs() 必須提供明確的值(而不是依賴隱含的 $_

$absolute_value = POSIX::abs(42);   # good

$absolute_value = POSIX::abs();     # throws exception
access

判斷檔案的可存取性。

if( POSIX::access( "/", &POSIX::R_OK ) ){
	print "have read permission\n";
}

失敗時傳回 undef。注意:請勿將 access() 用於安全性目的。在 access() 呼叫和您準備執行的操作之間,權限可能會變更:典型的競爭條件

acos

這與 C 函數 acos() 相同,傳回其數字引數的反餘弦。另請參閱 Math::Trig

acosh

這與 C 函數 acosh() 相同,傳回其數字引數的雙曲反餘弦 [C99]。另請參閱 Math::Trig。在 Perl v5.22 中新增。

alarm

這與 Perl 內建的 alarm() 函數相同,用於啟用或停用 SIGARLM 計時器,但 POSIX::alarm() 必須提供明確的值(而不是依賴隱含的 $_

POSIX::alarm(3)     # good

POSIX::alarm()      # throws exception
asctime

這與 C 函數 asctime() 相同。它會傳回下列形式的字串

"Fri Jun  2 18:22:13 2000\n\0"

,並因此而得名

$asctime = asctime($sec, $min, $hour, $mday, $mon,
		   $year, $wday, $yday, $isdst);

$mon 從 0 開始:1 月等於 0$year 從 1900 年開始:2001 年等於 101$wday$yday 預設為零(而且通常會被忽略),而 $isdst 預設為 -1。

請注意,結果總是會以英文顯示。請改用 "strftime" 以取得適合目前區域設定的結果。該函式的 %c 格式會產生區域設定偏好的表示方式。

asin

這與 C 函式 asin() 相同,會傳回其數字引數的反正弦。另請參閱 Math::Trig

asinh

這與 C 函式 asinh() 相同,會傳回其數字引數的雙曲反正弦 [C99]。另請參閱 Math::Trig。已於 Perl v5.22 中新增。

assert

尚未實作,但您可以使用 "die" in perlfuncCarp 模組來達成類似的事情。

atan

這與 C 函式 atan() 相同,會傳回其數字引數的反正切。另請參閱 Math::Trig

atanh

這與 C 函式 atanh() 相同,會傳回其數字引數的雙曲反正切 [C99]。另請參閱 Math::Trig。已於 Perl v5.22 中新增。

atan2

這與 Perl 內建的 atan2() 函式相同,會傳回由其兩個數字引數定義的反正切,即 y 座標和 x 座標。另請參閱 Math::Trig

atexit

未實作。atexit() 是 C 語言專用:改用 END {},請參閱 perlmod

atof

未實作。atof() 是 C 語言專用。Perl 會自動將字串轉換為數字。如果您需要強制將純量轉換為數字,請在純量後加上零。

atoi

未實作。atoi() 是 C 語言專用。Perl 會自動將字串轉換為數字。如果您需要強制將純量轉換為數字,請在純量後加上零。如果您只需要整數部分,請參閱 perlfunc 中的「int」

atol

未實作。atol() 是 C 語言專用。Perl 會自動將字串轉換為數字。如果您需要強制將純量轉換為數字,請在純量後加上零。如果您只需要整數部分,請參閱 perlfunc 中的「int」

bsearch

未提供 bsearch()。若要對字串清單執行二元搜尋,請參閱 Search::Dict

calloc

未實作。calloc() 是 C 語言專用。Perl 會自動執行記憶體管理。

cbrt

立方根 [C99]。已於 Perl v5.22 中新增。

ceil

這與 C 語言函式 ceil() 相同,會傳回大於或等於給定數值引數的最小整數值。

chdir

這與 Perl 內建的 chdir() 函式相同,允許使用者變更工作 (預設) 目錄 -- 請參閱 perlfunc 中的「chdir」 -- 但例外的是,POSIX::chdir() 必須提供明確的值 (而不是依賴隱含的 $_)

$rv = POSIX::chdir('path/to/dir');      # good

$rv = POSIX::chdir();                   # throws exception
chmod

這與 Perl 內建的 chmod() 函式相同,允許變更檔案和目錄的權限,請參閱 perlfunc 中的「chmod」,但例外的是 POSIX::chmod() 一次只能變更一個檔案(而不是檔案清單)

$c = chmod 0664, $file1, $file2;          # good

$c = POSIX::chmod 0664, $file1;           # throws exception

$c = POSIX::chmod 0664, $file1, $file2;   # throws exception

與內建的 chmod() 相同,$file 可以是檔案名稱或檔案控制代碼。

chown

這與 Perl 內建的 chown() 函式相同,允許變更檔案和目錄的所有者和群組,請參閱 perlfunc 中的「chown」

clearerr

未實作。請改用方法 IO::Handle::clearerr(),以重設指定串流的錯誤狀態(如果有)和 EOF 狀態(如果有)。

clock

這與 C 函式 clock() 相同,傳回以微秒為單位的已花費處理器時間。

close

關閉檔案。這會使用檔案描述符,例如透過呼叫 POSIX::open 取得的檔案描述符。

$fd = POSIX::open( "foo", &POSIX::O_RDONLY );
POSIX::close( $fd );

失敗時傳回 undef

另請參閱 perlfunc 中的「close」

closedir

這與 Perl 內建的 closedir() 函式相同,用於關閉目錄控制代碼,請參閱 perlfunc 中的「closedir」

cos

這與 Perl 內建的 cos() 函式相同,用於傳回其數字引數的餘弦,請參閱 perlfunc 中的「cos」。另請參閱 Math::Trig

cosh

這與 C 函式 cosh() 相同,用於傳回其數字引數的雙曲餘弦。另請參閱 Math::Trig

copysign

傳回 x,但具有 y 的符號 [C99]。Perl v5.22 中新增。

$x_with_sign_of_y = POSIX::copysign($x, $y);

另請參閱 "signbit"

creat

建立新檔案。這會傳回一個檔案描述符,類似於 POSIX::open 傳回的檔案描述符。使用 POSIX::close 來關閉檔案。

$fd = POSIX::creat( "foo", 0611 );
POSIX::close( $fd );

另請參閱 "perlfunc" 中的 "sysopen" 及其 O_CREAT 旗標。

ctermid

產生控制終端的路徑名稱。

$path = POSIX::ctermid();
ctime

這與 C 函式 ctime() 相同,等於 asctime(localtime(...)),請參閱 "asctime""localtime"

cuserid [POSIX.1-1988]

取得目前程序擁有者的登入名稱。

$name = POSIX::cuserid();

注意:此函式自 1990 年以來未在 POSIX 中指定,僅為了向後相容性而包含。新程式碼應改用 getlogin()

difftime

這與 C 函式 difftime() 相同,用於傳回兩個時間(由 time() 傳回)之間的時間差(以秒為單位),請參閱 "time"

div

未實作。div() 是 C 特有的,請在一般的 / 除法和模數 % 上使用 "perlfunc" 中的 "int"

dup

這類似於 C 函式 dup(),用於複製檔案描述符。

這使用檔案描述符,例如透過呼叫 POSIX::open 取得的檔案描述符。

失敗時傳回 undef

dup2

這類似於 C 函數 dup2(),用於將一個檔案描述符複製到另一個已知的檔案描述符。

這使用檔案描述符,例如透過呼叫 POSIX::open 取得的檔案描述符。

失敗時傳回 undef

erf

誤差函數 [C99]。在 Perl v5.22 中新增。

erfc

互補誤差函數 [C99]。在 Perl v5.22 中新增。

errno

傳回 errno 的值。

$errno = POSIX::errno();

這與 $! 的數值相同,請參閱 "$ERRNO" in perlvar

execl

未實作。execl() 是 C 特有的,請參閱 "exec" in perlfunc

execle

未實作。execle() 是 C 特有的,請參閱 "exec" in perlfunc

execlp

未實作。execlp() 是 C 特有的,請參閱 "exec" in perlfunc

execv

未實作。execv() 是 C 特有的,請參閱 "exec" in perlfunc

execve

未實作。execve() 是 C 特有的,請參閱 "exec" in perlfunc

execvp

未實作。execvp() 是 C 特有的,請參閱 "exec" in perlfunc

exit

這與 Perl 內建的 exit() 函數相同,用於結束程式,請參閱 "exit" in perlfunc

exp

這與 Perl 內建的 exp() 函數相同,用於傳回數值引數的指數 (以 e 為底),請參閱 "exp" in perlfunc

expm1

等於 exp(x) - 1,但對於小引數值更精確 [C99]。在 Perl v5.22 中新增。

另請參閱 "log1p"

fabs

這與 Perl 內建的 abs() 函式相同,用於傳回數字引數的絕對值,請參閱 "abs" in perlfunc

fclose

未實作。請改用 IO::Handle::close() 方法,或參閱 "close" in perlfunc

fcntl

這與 Perl 內建的 fcntl() 函式相同,請參閱 "fcntl" in perlfunc

fdopen

未實作。請改用 IO::Handle::new_from_fd() 方法,或參閱 "open" in perlfunc

feof

未實作。請改用 IO::Handle::eof() 方法,或參閱 "eof" in perlfunc

ferror

未實作。請改用 IO::Handle::error() 方法。

fflush

未實作。請改用 IO::Handle::flush() 方法。另請參閱 "$OUTPUT_AUTOFLUSH" in perlvar

fgetc

未實作。請改用 IO::Handle::getc() 方法,或參閱 "read" in perlfunc

fgetpos

未實作。請改用 IO::Seekable::getpos() 方法,或參閱 "seek" in perlfunc

fgets

未實作。請改用 IO::Handle::gets() 方法。類似於 <>,也稱為 "readline" in perlfunc

fileno

未實作。請改用 IO::Handle::fileno() 方法,或參閱 "fileno" in perlfunc

floor

這與 C 函式 floor() 相同,傳回小於或等於數字引數的最大整數值。

fdim

「正差」,若 x > y 則為 x - y,否則為零 [C99]。Perl v5.22 新增。

fegetround

傳回目前的浮點數捨入模式,其中之一

FE_TONEAREST FE_TOWARDZERO FE_UPWARD FE_DOWNWARD

FE_TONEAREST 類似 "round"FE_TOWARDZERO 類似 "trunc" [C99]。於 Perl v5.22 中新增。

fesetround

設定浮點數捨入模式,請參閱 "fegetround" [C99]。於 Perl v5.22 中新增。

fma

「融合乘法加法」,x * y + z,可能比明確的兩個運算更快(且失真更少)[C99]。於 Perl v5.22 中新增。

my $fused = POSIX::fma($x, $y, $z);
fmax

xy 的最大值,但當任一為 NaN 時,傳回另一個 [C99]。於 Perl v5.22 中新增。

my $max = POSIX::fmax($x, $y);
fmin

xy 的最小值,但當任一為 NaN 時,傳回另一個 [C99]。於 Perl v5.22 中新增。

my $min = POSIX::fmin($x, $y);
fmod

這與 C 函式 fmod() 相同。

$r = fmod($x, $y);

它傳回餘數 $r = $x - $n*$y,其中 $n = trunc($x/$y)$r$x 符號相同,且大小(絕對值)小於 $y 的大小。

fopen

未實作。請改用方法 IO::File::open(),或參閱 "open" in perlfunc

fork

這與 Perl 內建的 fork() 函式相同,用於複製目前的處理程序,請參閱 "fork" in perlfunc,如果您在 Windows 中,請參閱 perlfork

fpathconf

擷取檔案或目錄上可設定限制的值。這使用檔案描述符,例如透過呼叫 POSIX::open 所取得的檔案描述符。

下列程式碼將判斷包含 /var/foo 的檔案系統上,最長允許路徑名的最大長度。

$fd = POSIX::open( "/var/foo", &POSIX::O_RDONLY );
$path_max = POSIX::fpathconf($fd, &POSIX::_PC_PATH_MAX);

失敗時傳回 undef

fpclassify

傳回下列其中之一

FP_NORMAL FP_ZERO FP_SUBNORMAL FP_INFINITE FP_NAN

表示參數的類別 [C99]。FP_INFINITE 是正或負無限大,FP_NAN 不是數字。FP_SUBNORMAL 表示次正規數 (也稱為非正規數),非常小的數字,且精度低。FP_ZERO 是零。FP_NORMAL 是所有其他數字。Perl v5.22 新增。

fprintf

未實作。fprintf() 是 C 特有的,請改為參閱 "printf" in perlfunc

fputc

未實作。fputc() 是 C 特有的,請改為參閱 "print" in perlfunc

fputs

未實作。fputs() 是 C 特有的,請改為參閱 "print" in perlfunc

fread

未實作。fread() 是 C 特有的,請改為參閱 "read" in perlfunc

free

未實作。free() 是 C 特有的。Perl 會透明地進行記憶體管理。

freopen

未實作。freopen() 是 C 特有的,請改為參閱 "open" in perlfunc

frexp

傳回浮點數的尾數和指數。

($mantissa, $exponent) = POSIX::frexp( 1.234e56 );
fscanf

未實作。fscanf() 是 C 特有的,請改為使用 <> 和正規表示式。

fseek

未實作。請改用方法 IO::Seekable::seek(),或參閱 perlfunc 中的「seek」

fsetpos

未實作。請改用方法 IO::Seekable::setpos(),或參閱 perlfunc 中的「seek」

fstat

取得檔案狀態。這會使用檔案描述符,例如透過呼叫 POSIX::open 取得的檔案描述符。傳回的資料與 Perl 內建 stat 函式的資料相同。

$fd = POSIX::open( "foo", &POSIX::O_RDONLY );
@stats = POSIX::fstat( $fd );
fsync

未實作。請改用方法 IO::Handle::sync()

ftell

未實作。請改用方法 IO::Seekable::tell(),或參閱 perlfunc 中的「tell」

fwrite

未實作。fwrite() 是 C 語言專用函式,請改用 perlfunc 中的「print」

getc

這與 Perl 內建 getc() 函式相同,請參閱 perlfunc 中的「getc」

getchar

從 STDIN 傳回一個字元。與 Perl 的 getc() 相同,請參閱 perlfunc 中的「getc」

getcwd

傳回目前工作目錄的名稱。另請參閱 Cwd

getegid

傳回有效群組識別碼。類似於 Perl 的內建變數 $(,請參閱 perlvar 中的「$EGID」

getenv

傳回指定環境變數的值。相同的資訊可透過 %ENV 陣列取得。

geteuid

傳回有效使用者識別碼。與 Perl 的內建變數 $> 相同,請參閱 perlvar 中的「$EUID」

getgid

傳回使用者的實際群組識別碼。類似於 Perl 的內建變數 $),請參閱 perlvar 中的「$GID」

getgrgid

這與 Perl 內建的 getgrgid() 函式相同,用於透過群組識別碼傳回群組項目,請參閱 perlfunc 中的「getgrgid」

getgrnam

這與 Perl 內建的 getgrnam() 函式相同,用於透過群組名稱傳回群組項目,請參閱 perlfunc 中的「getgrnam」

getgroups

傳回使用者的補充群組 ID。類似於 Perl 內建變數 $),請參閱 perlvar 中的「$GID」

getlogin

這與 Perl 內建的 getlogin() 函式相同,用於傳回與目前工作階段關聯的使用者名稱,請參閱 perlfunc 中的「getlogin」

getpayload
use POSIX ':nan_payload';
getpayload($var)

傳回 NaN 酬載。Perl v5.24 新增。

請注意 「setpayload」 中的 API 不穩定性警告。

請參閱 「nan」 以進一步討論 NaN

getpgrp

這與 Perl 內建的 getpgrp() 函式相同,用於傳回目前程序的程序群組識別碼,請參閱 perlfunc 中的「getpgrp」

getpid

傳回程序識別碼。與 Perl 內建變數 $$ 相同,請參閱 perlvar 中的「$PID」

getppid

這與 Perl 內建的 getppid() 函式相同,用於傳回目前程序的父程序識別碼,請參閱 perlfunc 中的「getppid」

getpwnam

這與 Perl 內建的 getpwnam() 函式相同,用於透過使用者名稱傳回使用者項目,請參閱 perlfunc 中的「getpwnam」

getpwuid

這與 Perl 內建的 getpwuid() 函式相同,用於透過使用者識別碼傳回使用者項目,請參閱 perlfunc 中的「getpwuid」

gets

STDIN 傳回一行,類似於 <>,也稱為 readline() 函式,請參閱 perlfunc 中的「readline」

注意:如果您有仍然使用 gets() 的 C 程式,請非常小心。gets() 函數會造成無止盡的悲劇,因為它沒有緩衝區溢位檢查。永遠不應該使用它。應該優先使用 fgets() 函數。

getuid

傳回使用者的識別碼。與 Perl 的內建變數 $< 相同,請參閱 "$UID" in perlvar

gmtime

這與 Perl 的內建函數 gmtime() 相同,用於將自紀元以來的秒數轉換為格林威治標準時間的日期,請參閱 "gmtime" in perlfunc

hypot

等於 sqrt(x * x + y * y),但對於非常大或非常小的參數來說更穩定 [C99]。在 Perl v5.22 中新增。

ilogb

整數二進位對數 [C99]。在 Perl v5.22 中新增。

例如,ilogb(20) 為 4,是一個整數。

另請參閱 "logb"

Inf

無限大作為常數

use POSIX qw(Inf);
my $pos_inf = +Inf;  # Or just Inf.
my $neg_inf = -Inf;

另請參閱 "isinf""fpclassify"

isalnum

此函數已從 Perl v5.24 中移除。它與匹配 qr/ ^ [[:alnum:]]+ $ /x 非常相似,您應該轉換為使用它。請參閱 "POSIX Character Classes" in perlrecharclass

isalpha

此函數已從 Perl v5.24 中移除。它與匹配 qr/ ^ [[:alpha:]]+ $ /x 非常相似,您應該轉換為使用它。請參閱 "POSIX Character Classes" in perlrecharclass

isatty

傳回一個布林值,表示指定的檔案句柄是否連接到 tty。類似於 -t 算子,請參閱 "-X" in perlfunc

iscntrl

此函數已從 Perl v5.24 中移除。它與匹配 qr/ ^ [[:cntrl:]]+ $ /x 非常相似,您應該轉換為使用它。請參閱 "POSIX Character Classes" in perlrecharclass

isdigit

此函式已在 Perl v5.24 中移除。它與比對 qr/ ^ [[:digit:]]+ $ /x 非常相似,您應該改用此函式。請參閱 "POSIX 字元類別" 中的 perlrecharclass

isfinite

如果參數是有限數字(亦即不是無限大或非數字),則傳回 true [C99]。已在 Perl v5.22 中加入。

另請參閱 "isinf""isnan""fpclassify"

isgraph

此函式已在 Perl v5.24 中移除。它與比對 qr/ ^ [[:graph:]]+ $ /x 非常相似,您應該改用此函式。請參閱 "POSIX 字元類別" 中的 perlrecharclass

isgreater

(也包括 isgreaterequalislessislessequalislessgreaterisunordered

處理 NaN 的浮點數比較 [C99]。已在 Perl v5.22 中加入。

isinf

如果參數是無限大(正或負),則傳回 true [C99]。已在 Perl v5.22 中加入。

另請參閱 "Inf""isnan""isfinite""fpclassify"

islower

此函式已在 Perl v5.24 中移除。它與比對 qr/ ^ [[:lower:]]+ $ /x 非常相似,您應該改用此函式。請參閱 "POSIX 字元類別" 中的 perlrecharclass

isnan

如果參數是 NaN(非數字)[C99],則傳回 true。Perl v5.22 新增。

請注意,您也可以使用 等號運算子==!=)來測試「NaN 性質」,例如

print "x is not a NaN\n" if $x == $x;

由於 NaN 不等於任何東西,包括它自己

另請參閱 "nan""NaN""isinf""fpclassify"

isnormal

如果參數是正常的(即不是次標準/非正規化,也不是無限大或非數字)[C99],則傳回 true。Perl v5.22 新增。

另請參閱 "isfinite""fpclassify"

isprint

此函式已從 Perl v5.24 中移除。它與對應 qr/ ^ [[:print:]]+ $ /x 非常相似,您應該轉換為使用它。請參閱 "POSIX Character Classes" in perlrecharclass

ispunct

此函式已從 Perl v5.24 中移除。它與對應 qr/ ^ [[:punct:]]+ $ /x 非常相似,您應該轉換為使用它。請參閱 "POSIX Character Classes" in perlrecharclass

issignaling
use POSIX ':nan_payload';
issignaling($var, $payload)

如果參數是信號 NaN,則傳回 true。Perl v5.24 新增。

請注意 「setpayload」 中的 API 不穩定性警告。

請參閱 「nan」 以進一步討論 NaN

isspace

此函式已從 Perl v5.24 中移除。它與對應 qr/ ^ [[:space:]]+ $ /x 非常相似,您應該轉換為使用它。請參閱 "POSIX Character Classes" in perlrecharclass

isupper

此函式已於 Perl v5.24 中移除。它與比對 qr/ ^ [[:upper:]]+ $ /x 非常類似,您應該轉而使用它。請參閱 perlrecharclass 中的「POSIX 字元類別」

isxdigit

此函式已於 Perl v5.24 中移除。它與比對 qr/ ^ [[:xdigit:]]+ $ /x 非常類似,您應該轉而使用它。請參閱 perlrecharclass 中的「POSIX 字元類別」

j0
j1
jn
y0
y1
yn

零階第一類貝索函數。

kill

這與 Perl 內建的 kill() 函式相同,用於將訊號傳送給程序(通常用於終止程序),請參閱 perlfunc 中的「kill」

labs

未實作。(用於傳回長整數的絕對值。)labs() 是 C 特有的,請改用 perlfunc 中的「abs」

lchown

這與 C 函式相同,但參數順序與 Perl 內建的 chown() 一致,並增加了僅限一個路徑的限制,而不是路徑清單。與 chown() 函式執行相同的工作,但變更符號連結的所有者,而不是符號連結指向的檔案。

POSIX::lchown($uid, $gid, $file_path);
ldexp

這與 C 函式 ldexp() 相同,用於將浮點數乘以 2 的次方。

$x_quadrupled = POSIX::ldexp($x, 2);
ldiv

未實作。(用於計算長整數的股利。)ldiv() 是 C 特有的,請改用 /int()

lgamma

Gamma 函數的對數 [C99]。於 Perl v5.22 中新增。

另請參閱 "tgamma"

log1p

等同於 log(1 + x),但對於小參數值能得到更穩定的結果 [C99]。於 Perl v5.22 中新增。

log2

以 2 為底的對數 [C99]。於 Perl v5.22 中新增。

另請參閱 "expm1"

logb

整數二進位對數 [C99]。在 Perl v5.22 中新增。

例如,logb(20) 是 4,是一個浮點數。

另請參閱 "ilogb"

這與 Perl 的內建 link() 函數相同,用於在檔案中建立硬連結,請參閱 "link" in perlfunc

localeconv

取得數字格式化資訊。傳回一個雜湊的參考,其中包含目前程式底層的區域設定的格式化值,無論是否從 use locale 的範圍內呼叫。此函數的使用者也應閱讀 perllocale,其中全面討論了 Perl 區域設定處理,包括 專門針對此函數的章節。在 Perl 5.28 之前,或在非執行緒安全環境中執行時,除非確定底層區域設定為 C 或 POSIX,否則不應在執行緒應用程式中使用它。這是因為它會改變區域設定,同時也會影響所有執行緒。從 Visual Studio 2005 開始的 Windows 平台大多是執行緒安全的,但在 Visual Studio 2015 之前的版本中使用此函數可能會與已呼叫 "switch_to_global_locale" in perlapi 的執行緒競爭。

以下是如何查詢 de (Deutsch 或德語) 區域設定的資料庫。

my $loc = POSIX::setlocale( &POSIX::LC_ALL, "de" );
print "Locale: \"$loc\"\n";
my $lconv = POSIX::localeconv();
foreach my $property (qw(
	decimal_point
	thousands_sep
	grouping
	int_curr_symbol
	currency_symbol
	mon_decimal_point
	mon_thousands_sep
	mon_grouping
	positive_sign
	negative_sign
	int_frac_digits
	frac_digits
	p_cs_precedes
	p_sep_by_space
	n_cs_precedes
	n_sep_by_space
	p_sign_posn
	n_sign_posn
	int_p_cs_precedes
	int_p_sep_by_space
	int_n_cs_precedes
	int_n_sep_by_space
	int_p_sign_posn
	int_n_sign_posn
))
{
	printf qq(%s: "%s",\n),
		$property, $lconv->{$property};
}

名稱以 int_p_int_n_ 開頭的成員是由 POSIX.1-2008 新增的,並且僅在支援它們的系統上可用。

數字輸入傳回 -1 的值表示欄位不適用於區域設定。這很罕見,除了在 C 和相關區域設定中,因為它們沒有定義大多數的貨幣值。它也可能發生在其他布林值欄位中,用來表示值既不是真也不是假。這發生在 p_cs_precedesint_p_cs_precedes 中,當貨幣符號既不置於正值之前也不置於正值之後,而是置於中間,取代基數字元。

在 Perl v5.37.7 之前,空字串欄位和數值欄位值為 -1 會從傳回的雜湊中省略。

localtime

這與 Perl 的內建 localtime() 函數相同,用於將自紀元以來的秒數轉換為日期,請參閱 "localtime" in perlfunc,但 POSIX::localtime() 必須提供明確的值(而不是依賴隱含的 $_

@localtime = POSIX::localtime(time);    # good

@localtime = localtime();               # good

@localtime = POSIX::localtime();        # throws exception
log

這與 Perl 的內建 log() 函數相同,傳回數字引數的自然(以 e 為底)對數,請參閱 "log" in perlfunc

log10

這與 C 函數 log10() 相同,傳回數字引數的 10 為底對數。您也可以使用

sub log10 { log($_[0]) / log(10) }

sub log10 { log($_[0]) / 2.30258509299405 }

sub log10 { log($_[0]) * 0.434294481903252 }
longjmp

未實作。longjmp() 是 C 特有的:請改用 "die" in perlfunc

lseek

移動檔案的讀寫位置。這使用檔案描述符,例如透過呼叫 POSIX::open 取得的檔案描述符。

$fd = POSIX::open( "foo", &POSIX::O_RDONLY );
$off_t = POSIX::lseek( $fd, 0, &POSIX::SEEK_SET );

失敗時傳回 undef

lrint

根據目前的浮點數捨入模式,將引數捨入到最接近的(例如 "round")、捨入到零(例如 "trunc")、捨入到負無窮大或捨入到正無窮大 [C99]。在 Perl v5.22 中新增。

有關捨入模式,請參閱 "fegetround"

lround

"round" 相同,但為整數,而不是浮點數 [C99]。在 Perl v5.22 中新增。

另請參閱 "ceil""floor""trunc"

由於疏忽,目前未預設匯出此項目,或作為 :math_h_c99 匯出標籤的一部分;因此,必須以明確名稱匯入。

malloc

未實作。malloc() 是 C 語言專用。Perl 以透明的方式處理記憶體管理。

mblen

在非執行緒 Perl 中,這與 C 語言函式 mblen() 相同。在執行緒 Perl 中,如果可用的話,它會透明地(幾乎)以執行緒安全度更高的 mbrlen(3) 取代 mblen

Perl 核心不支援寬位元組和多位元組區域設定,Unicode UTF-8 區域設定除外。此函式搭配 "mbtowc""wctomb" 可用於自行編碼/解碼其他類型的多位元組區域設定。

undef 用作此函式的第一個參數,以產生將 NULL 傳遞為 mblen 的第一個參數的效果。這會將任何位移狀態重設為其初始值。如果替換了 mbrlen,則傳回值未定義,因此您絕不應依賴它。

當第一個參數是包含值(可能是 PV 字串或可強制轉換為 PV 字串)的純量時,傳回值是該字串第一個字元所佔用的位元組數目;如果第一個字元是寬 NUL 字元,則傳回值為 0;如果發生錯誤,則傳回值為負數。這是根據目前程式底層的區域設定,不論函式是否從 use locale 範圍內的 Perl 程式碼呼叫。Perl 絕不會試圖隱藏 mblenmbrlen 之間 errno 設定的任何差異。它會在呼叫它們之前將 errno 設定為 0。

如果第二個選用參數大於第一個參數字串的實際長度,則會忽略它。

mbtowc

在非執行緒 Perl 中,這與 C 語言函式 mbtowc() 相同。在執行緒 Perl 中,如果可用的話,它會透明地(幾乎)以執行緒安全度更高的 mbrtowc(3) 取代 mbtowc

Perl 核心不支援寬位元組和多位元組區域設定,Unicode UTF-8 區域設定除外。此函式搭配 "mblen""wctomb" 可用於自行編碼/解碼其他類型的多位元組區域設定。

第一個參數是一個標量,成功時,第二個參數中所包含的多位元組字串所表示的寬字元會儲存在其中。如果第三個參數(選用)大於第二個參數字串的實際長度,則會略過它。

undef 用作此函數的第二個參數,以產生將 NULL 傳遞為 mbtowc 的第二個參數的效果。這會略過第一個參數,並將任何位移狀態重設為其初始值。如果替換了 mbrtowc,則傳回值未定義,因此您絕不應依賴它。

當第二個參數是包含一個值(可能是 PV 字串或可強制轉換為 PV 字串)的標量時,傳回值是該字串第一個字元所佔用的位元組數目;或 0(如果第一個字元是寬 NUL 字元);或負數(如果發生錯誤)。這是根據目前程式底層的區域設定,不論函數是否從 use locale 範圍內的 Perl 程式碼呼叫。Perl 沒有嘗試隱藏 mbtowcmbrtowc 之間 errno 設定的任何差異。它確實在呼叫它們之前將 errno 設定為 0。

memchr

未實作。memchr() 是 C 專用的,請改看 perlfunc 中的「index」

memcmp

未實作。memcmp() 是 C 專用的,請改用 eq,請看 perlop

memcpy

未實作。memcpy() 是 C 專用的,請使用 =,請看 perlop,或請看 perlfunc 中的「substr」

memmove

未實作。memmove() 是 C 語言專用,請使用 =,請參閱 perlop,或參閱 "substr" in perlfunc

memset

未實作。memset() 是 C 語言專用,請改用 x,請參閱 perlop

mkdir

這與 Perl 內建的 mkdir() 函式相同,用於建立目錄,請參閱 "mkdir" in perlfunc

mkfifo

這類似於 C 語言的 mkfifo() 函式,用於建立 FIFO 特殊檔案。

if (mkfifo($path, $mode)) { ....

失敗時傳回 undef$mode 類似於 mkdir() 的模式,請參閱 "mkdir" in perlfunc,但對於 mkfifo,您必須指定 $mode

mktime

將日期/時間資訊轉換為日曆時間。

語法

mktime(sec, min, hour, mday, mon, year, wday = 0,
       yday = 0, isdst = -1)

月份 (mon)、星期 (wday) 和年日 (yday) 從 0 開始,,1 月是 0,不是 1;星期日是 0,不是 1;1 月 1 日是 0,不是 1。年份 (year) 是自 1900 年以來的年份;,1995 年是 95;2001 年是 101。請參閱系統的 mktime() 手冊頁,以了解這些和其他引數的詳細資訊。

1995 年 12 月 12 日上午 10:30 的日曆時間。

$time_t = POSIX::mktime( 0, 30, 10, 12, 11, 95 );
print "Date = ", POSIX::ctime($time_t);

失敗時傳回 undef

modf

傳回浮點數的整數部分和小數部分。

($fractional, $integral) = POSIX::modf( 3.14 );

另請參閱 "round"

NaN

非數字,作為常數

use POSIX qw(NaN);
my $nan = NaN;

另請參閱 "nan"/isnan"fpclassify"

nan
my $nan = nan();

傳回 NaN,非數字 [C99]。在 Perl v5.22 中新增。

傳回的 NaN 永遠是安靜的 NaN,與訊號相反。

有了參數後,可以用來產生具有酬載的 NaN。參數首先被解釋為浮點數,但接著任何小數部分都會被截斷(朝零的方向),且該值會被解釋為無符號整數。這個整數的位元會儲存在 NaN 的未用位元中。

結果具有雙重性質:它是一個 NaN,但它也攜帶了整數在其中。整數可以用 "getpayload" 擷取。不過,請注意酬載並不會傳播,甚至在複製時也不會,當然在算術運算中也不會。

有多少位元適合放入 NaN 取決於使用哪一種浮點,但在最常見的平台(64 位元 IEEE 754,或 x86 80 位元長雙精度)上,分別有 51 和 61 個位元可用。(會有 52 和 62 個,但 NaN 的安靜/訊號位元會拿走一個。)不過,由於浮點到整數再到浮點的轉換,請仔細測試你是否拿回了你放進去的東西。如果你的整數只有 32 位元寬,你可能不應該依賴超過 32 位元的酬載。

「訊號」NaN 是否與「安靜」NaN 有任何不同,取決於平台。另外請注意預設 NaN(沒有參數的 nan())的酬載不一定為零,請使用 setpayload 明確設定酬載。在某些平台上,例如 32 位元 x86(除非使用 80 位元長雙精度),根本不支援訊號位元。

另請參閱 "isnan""NaN""setpayload""issignaling"

nearbyint

傳回最接近參數的整數,根據目前的捨入模式(請參閱 "fegetround")[C99]。在 Perl v5.22 中新增。

nextafter

傳回在 x 之後且朝向 y 方向的下一可表示浮點數 [C99]。在 Perl v5.22 中新增。

my $nextafter = POSIX::nextafter($x, $y);

類似 "nexttoward",但可能較不精確。

nexttoward

傳回在 x 之後且朝向 y 方向的下一可表示浮點數 [C99]。在 Perl v5.22 中新增。

my $nexttoward = POSIX::nexttoward($x, $y);

類似 "nextafter",但可能較精確。

nice

這類似於 C 函數 nice(),用於變更目前程序的排程偏好。正值表示較有禮貌的程序,負值表示較需要資源的程序。一般 (非 root) 使用者程序只能變更為較有禮貌。

失敗時傳回 undef

offsetof

未實作。offsetof() 是 C 特有的,您可能想改看 "pack" in perlfunc

open

開啟檔案以供讀寫。這會傳回檔案描述子,而非 Perl 檔案控制代碼。請使用 POSIX::close 關閉檔案。

以 0666 模式開啟檔案為唯讀。

$fd = POSIX::open( "foo" );

開啟檔案以供讀寫。

$fd = POSIX::open( "foo", &POSIX::O_RDWR );

開啟檔案以供寫入,並截斷檔案。

$fd = POSIX::open(
	"foo", &POSIX::O_WRONLY | &POSIX::O_TRUNC
);

以 0640 模式建立新檔案。設定檔案以供寫入。

$fd = POSIX::open(
	"foo", &POSIX::O_CREAT | &POSIX::O_WRONLY, 0640
);

失敗時傳回 undef

另請參閱 "sysopen" in perlfunc

opendir

開啟目錄以供讀取。

$dir = POSIX::opendir( "/var" );
@files = POSIX::readdir( $dir );
POSIX::closedir( $dir );

失敗時傳回 undef

pathconf

擷取檔案或目錄上可設定限制的值。

以下程式碼會判斷包含 /var 的檔案系統中,最長允許路徑名的最大長度。

$path_max = POSIX::pathconf( "/var",
			      &POSIX::_PC_PATH_MAX );

失敗時傳回 undef

pause

這類似於 C 函數 pause(),它會暫停目前程序的執行,直到收到訊號為止。

失敗時傳回 undef

perror

這與 C 函數 perror() 相同,它會將指定的訊息,後接 ": " 和目前的錯誤字串,輸出到標準錯誤串流。請改用 warn() 函數和 $! 變數,請參閱 "warn" in perlfunc"$ERRNO" in perlvar

pipe

建立跨程序通道。這會傳回類似 POSIX::open 傳回的檔案描述子。

my ($read, $write) = POSIX::pipe();
POSIX::write( $write, "hello", 5 );
POSIX::read( $read, $buf, 5 );

另請參閱 "pipe" in perlfunc

pow

計算 $x 乘方 $exponent

$ret = POSIX::pow( $x, $exponent );

您也可以使用 ** 運算子,請參閱 perlop

printf

格式化並將指定的參數列印至 STDOUT。另請參閱 "printf" in perlfunc

putc

未實作。putc() 是 C 特有的,請改用 "print" in perlfunc

putchar

未實作。putchar() 是 C 特有的,請改用 "print" in perlfunc

puts

未實作。puts() 是 C 特有的,請改用 "print" in perlfunc

qsort

未實作。qsort() 是 C 特有的,請改用 "sort" in perlfunc

raise

將指定的訊號傳送至目前的程序。另請參閱 "kill" in perlfunc"$PID" in perlvar 中的 $$

rand

未實作。rand() 不可移植,請改用 "rand" in perlfunc

read

從檔案中讀取。這會使用檔案描述符,例如透過呼叫 POSIX::open 取得的檔案描述符。如果緩衝區 $buf 不夠大,Perl 會將其擴充以容納請求。

$fd = POSIX::open( "foo", &POSIX::O_RDONLY );
$bytes = POSIX::read( $fd, $buf, 3 );

失敗時傳回 undef

另請參閱 "sysread" in perlfunc

readdir

這與 Perl 內建的 readdir() 函式相同,用於讀取目錄項目,請參閱 "readdir" in perlfunc

realloc

未實作。realloc() 是 C 特有的。Perl 會透明地進行記憶體管理。

remainder

給定 xy,傳回值 x - n*y,其中 n 是最接近 x/y 的整數 [C99]。在 Perl v5.22 中新增。

my $remainder = POSIX::remainder($x, $y)

另請參閱 "remquo"

remove

從檔案系統中刪除一個名稱。對檔案呼叫 perlfunc 中的「unlink」,對目錄呼叫 perlfunc 中的「rmdir」

remquo

類似於 「remainder」,但也會傳回商數 (n) 的低位元 [C99]。在 Perl v5.22 中新增。

(這是一個相當深奧的介面,主要用於實作數值演算法。)

rename

這與 Perl 內建的 rename() 函式相同,用於重新命名檔案,請參閱 perlfunc 中的「rename」

rewind

尋至檔案開頭。

rewinddir

這與 Perl 內建的 rewinddir() 函式相同,用於倒帶目錄項目串流,請參閱 perlfunc 中的「rewinddir」

rint

「lrint」 相同。

rmdir

這與 Perl 內建的 rmdir() 函式相同,用於移除(空的)目錄,請參閱 perlfunc 中的「rmdir」

round

傳回最接近參數的整數(但仍為浮點數)[C99]。在 Perl v5.22 中新增。

另請參閱 「ceil」「floor」「lround」「modf」「trunc」

scalbn

傳回 x * 2**y [C99]。在 Perl v5.22 中新增。

另請參閱 「frexp」「ldexp」

scanf

未實作。scanf() 是 C 特有的,請改用 <> 和正規表示式,請參閱 perlre

setgid

設定此程序的實際群組識別碼和有效群組識別碼。類似於將值指定給 Perl 內建變數 $),請參閱 "$EGID" in perlvar,但後者只會變更實際使用者識別碼,且 setgid() 只使用單一數字引數,而不是空白分隔的數字清單。

setjmp

未實作。setjmp() 是 C 語言專用的:請改用 eval {},請參閱 "eval" in perlfunc

setlocale

警告!在 Perl 5.28 之前或是在不支援執行緒安全區域設定作業的系統上,請勿在 執行緒 中使用此函式。區域設定會同時在所有其他執行緒中變更,而且如果您的執行緒被作業系統暫停,並啟動另一個執行緒,該執行緒將不會擁有預期的區域設定。在某些平台上,如果兩個執行緒幾乎同時呼叫此函式,可能會發生競爭情況,導致段落錯誤。此警告不適用於非執行緒建置,或存在且非零的 ${^SAFE_LOCALES} 的 Perl;也就是說,Perl 5.28 和更新版本編譯為區域設定執行緒安全。

此函式會修改和查詢程式底層的區域設定。此函式的使用者應閱讀 perllocale,其中提供了 Perl 區域設定處理的全面性討論,瞭解這些知識對於正確使用此函式是必要的。其中包含 專門針對此函式的章節。此處的討論僅是 setlocale() 的摘要參考。請注意,除了 "use locale" 的範圍內,Perl 本身幾乎完全不受區域設定影響。(例外情況列在 "Not within the scope of "use locale"" in perllocale,而 POSIX 模組中的區域設定相關函式會受到目前區域設定影響。)

下列範例假設

use POSIX qw(setlocale LC_ALL LC_CTYPE);

已發出。

下列範例將設定傳統 UNIX 系統區域設定行為(第二個引數 "C")。

$loc = setlocale( LC_ALL, "C" );

下列範例將查詢目前的 LC_CTYPE 類別。(沒有第二個引數表示「查詢」。)

$loc = setlocale( LC_CTYPE );

下列將根據區域環境變數 (第二個引數 "") 設定 LC_CTYPE 行為。請參閱系統的 setlocale(3) 文件以了解區域環境變數的意義,或參閱 perllocale

$loc = setlocale( LC_CTYPE, "" );

下列將設定 LC_COLLATE 行為為阿根廷西班牙語。注意:區域環境的命名和可用性取決於您的作業系統。請參閱 perllocale 以了解如何找出系統中可用的區域環境。

$loc = setlocale( LC_COLLATE, "es_AR.ISO8859-1" );
setpayload
use POSIX ':nan_payload';
setpayload($var, $payload);

設定變數的 NaN 有效負載。於 Perl v5.24 中新增。

注意:NaN 有效負載 API 基於最新 (截至 2015 年 6 月) 提出的 ISO C 介面,但它們還不是標準。事情可能會改變。

請參閱 「nan」 以進一步討論 NaN

另請參閱 "setpayloadsig""isnan""getpayload""issignaling"

setpayloadsig
use POSIX ':nan_payload';
setpayloadsig($var, $payload);

類似於 "setpayload",但也會使 NaN 發出訊號。於 Perl v5.24 中新增。

NaN 可能會或可能不會根據平台而有不同的行為。

請注意 「setpayload」 中的 API 不穩定性警告。

請注意,由於浮點格式的運作方式,在最常見的平台上,最好避免零的發訊號有效負載,因為它最終可能與 +Inf 相同。

另請參閱 "nan""isnan""getpayload""issignaling"

setpgid

這類似於 C 函式 setpgid(),用於設定目前處理程序的處理程序群組識別碼。

失敗時傳回 undef

setsid

這與 C 函式 setsid() 相同,用於設定目前處理程序的階段識別碼。

setuid

設定此程序的實際使用者識別碼和有效使用者識別碼。類似於將值指定給 Perl 內建變數 $<,請參閱 "$UID" in perlvar,但後者只會變更實際使用者識別碼。

sigaction

詳細訊號管理。這會使用 POSIX::SigAction 物件作為 actionoldaction 參數(oldaction 也可以只是一個雜湊參考)。請參閱系統的 sigaction manpage 以取得詳細資料,另請參閱 "POSIX::SigRt"

語法

sigaction(signal, action, oldaction = 0)

失敗時傳回 undefsignal 必須是數字(例如 SIGHUP),而不是字串(例如 "SIGHUP"),儘管 Perl 會盡力理解您的意思。

如果您使用 SA_SIGINFO 旗標,訊號處理常式除了第一個參數(訊號名稱)之外,還會收到第二個參數,也就是雜湊參考,其中包含下列具備下列語意的金鑰,定義於 POSIX/SUSv3

signo       the signal number
errno       the error number
code        if this is zero or less, the signal was sent by
            a user process and the uid and pid make sense,
            otherwise the signal was sent by the kernel

自 Perl v5.24 起,特定 code 值的常數可以個別導入或使用 :signal_h_si_code 標籤。

下列也由 POSIX/SUSv3 定義,但不幸的是沒有廣泛實作

pid         the process id generating the signal
uid         the uid of the process id generating the signal
status      exit value or signal for SIGCHLD
band        band event for SIGPOLL
addr        address of faulting instruction or memory
            reference for SIGILL, SIGFPE, SIGSEGV or SIGBUS

第三個參數也會傳遞給處理常式,其中包含 siginfo 結構的原始二進位內容的副本:如果系統有一些非 POSIX 欄位,這個第三個參數就是從中 unpack() 的地方。

請注意,並非所有 siginfo 值都能同時有意義(例如,有些值僅對特定訊號有效),而且並非所有值都能從 Perl 的角度來看有意義,您應該參閱系統的 sigaction,可能還有 siginfo 文件。

siglongjmp

未實作。siglongjmp() 是 C 特有的:請改用 "die" in perlfunc

signbit

對於正數參數傳回零,對於負數參數傳回非零 [C99]。Perl v5.22 新增。

sigpending

檢查被封鎖和待處理的訊號。這會對 sigset 參數使用 POSIX::SigSet 物件。有關詳細資訊,請參閱系統的 sigpending 手冊頁。

語法

sigpending(sigset)

失敗時傳回 undef

sigprocmask

變更和/或檢查呼叫程序的訊號遮罩。這會對 sigsetoldsigset 參數使用 POSIX::SigSet 物件。有關詳細資訊,請參閱系統的 sigprocmask 手冊頁。

語法

sigprocmask(how, sigset, oldsigset = 0)

失敗時傳回 undef

請注意,如果您使用安全訊號,則無法可靠地從其自己的訊號處理常式封鎖或解除封鎖訊號。其他訊號可以可靠地封鎖或解除封鎖。

sigsetjmp

未實作。sigsetjmp() 是特定於 C 的:請改用 eval {},請參閱 perlfunc 中的 "eval"

sigsuspend

安裝訊號遮罩並暫停程序,直到訊號到達。這會對 signal_mask 參數使用 POSIX::SigSet 物件。有關詳細資訊,請參閱系統的 sigsuspend 手冊頁。

語法

sigsuspend(signal_mask)

失敗時傳回 undef

sin

這與 Perl 的內建 sin() 函數相同,用於傳回數值參數的正弦,請參閱 perlfunc 中的 "sin"。另請參閱 Math::Trig

sinh

這與 C 函數 sinh() 相同,用於傳回數值參數的雙曲正弦。另請參閱 Math::Trig

sleep

此功能與 Perl 內建的 sleep() 函數相同,用於暫停執行目前的程序一段時間,請參閱 perlfunc 中的「sleep」。不過,有一個顯著的差異:POSIX::sleep() 會傳回未睡眠的秒數,而 CORE::sleep() 會傳回已睡眠的秒數。

sprintf

此功能與 Perl 內建的 sprintf() 函數類似,用於傳回一個字串,其參數已根據要求格式化,請參閱 perlfunc 中的「sprintf」

sqrt

此功能與 Perl 內建的 sqrt() 函數相同,用於傳回數值參數的平方根,請參閱 perlfunc 中的「sqrt」

srand

提供一個種子給偽亂數產生器,請參閱 perlfunc 中的「srand」

sscanf

未實作。sscanf() 是 C 特有的,請改用正規表示式,請參閱 perlre

stat

此功能與 Perl 內建的 stat() 函數相同,用於傳回檔案和目錄的資訊。

strcat

未實作。strcat() 是 C 特有的,請改用 .=,請參閱 perlop

strchr

未實作。strchr() 是 C 特有的,請改用 perlfunc 中的「index」

strcmp

未實作。strcmp() 是 C 特有的,請改用 eqcmp,請參閱 perlop

strcoll

此功能與 C 函數 strcoll() 相同,用於整理(比較)使用 strxfrm() 函數轉換的字串。由於 Perl 可以透明地執行此動作,因此並非必要,請參閱 perllocale

請注意,在 UTF-8 區域設定中,傳遞給此函數的任何內容都必須為 UTF-8;而在非 UTF-8 區域設定中,傳遞的任何內容都不得為 UTF-8 編碼。

另請注意,字串以一種區域設定(例如 ISO-8859-6 阿拉伯語)編碼,並根據另一種區域設定(例如 ISO-8859-7 希臘語)整理,這沒有意義。結果基本上沒有意義。

strcpy

未實作。strcpy() 是 C 語言專用,請改用 =,請參閱 perlop

strcspn

未實作。strcspn() 是 C 語言專用,請改用正規表示法,請參閱 perlre

strerror

傳回指定 errno 的錯誤字串。與 $! 的字串形式相同,請參閱 "$ERRNO" in perlvar

strftime

將日期和時間資訊轉換為字串。傳回字串。

語法

strftime(fmt, sec, min, hour, mday, mon, year,
	 wday = -1, yday = -1, isdst = -1)

月份 (mon)、星期 (wday) 和一年中的第幾天 (yday) 從 0 開始, 1 月是 0,不是 1;星期日是 0,不是 1;1 月 1 日是 0,不是 1。年份 (year) 是自 1900 年以來的年份, 1995 年是 95;2001 年是 101。請參閱系統的 strftime() 手冊頁,以取得這些和其他引數的詳細資料。

如果您希望您的程式碼具備可攜性,您的格式 (fmt) 引數應僅使用 ANSI C 標準 (C99,以策安全) 定義的轉換指定符。這些是 aAbBcdHIjmMpSUwWxXyYZ%。但即使如此,某些轉換指定符的結果仍不具備可攜性。例如,指定符 aAbBcpZ 會根據使用者的區域設定而改變,而設定區域設定的方式 (區域設定名稱) 和預期的輸出都是非標準的。指定符 c 會根據使用者的時區設定和作業系統的時區計算規則而改變。指定符 Z 眾所周知不具備可攜性,因為時區名稱是非標準的。堅持使用數字指定符是最安全的途徑。

提供的引數會像在呼叫系統的 strftime() 函式之前呼叫 mktime() 一樣一致,但 isdst 值不受影響。

1995 年 12 月 12 日星期二的字串。

$str = POSIX::strftime( "%A, %B %d, %Y",
			 0, 0, 0, 12, 11, 95, 2 );
print "$str\n";
strlen

未實作。strlen() 是 C 專用,請改用 length(),請參閱 "length" in perlfunc

strncat

未實作。strncat() 是 C 專用,請改用 .=,請參閱 perlop

strncmp

未實作。strncmp() 是 C 專用,請改用 eq,請參閱 perlop

strncpy

未實作。strncpy() 是 C 專用,請改用 =,請參閱 perlop

strpbrk

未實作。strpbrk() 是 C 專用,請改用正規表示式,請參閱 perlre

strrchr

未實作。strrchr() 是 C 專用,請改參閱 "rindex" in perlfunc

strspn

未實作。strspn() 是 C 專用,請改用正規表示式,請參閱 perlre

strstr

這與 Perl 內建的 index() 函式相同,請參閱 "index" in perlfunc

strtod

字串轉換為雙精度浮點數。傳回已剖析的數字和字串未剖析部分的字元數。真正符合 POSIX 的系統會設定 $! ($ERRNO) 來指出轉換錯誤,因此在呼叫 strtod 之前請清除 $!。然而,非 POSIX 系統可能不會檢查溢位,因此永遠不會設定 $!

strtod 遵循任何 POSIX setlocale() LC_NUMERIC 設定,不論是否從 use locale 範圍內的 Perl 程式碼呼叫。在 Perl 5.28 之前,或在非執行緒安全環境中執行時,除非確定底層區域設定為 C 或 POSIX,否則不應在執行緒應用程式中使用它。這是因為它會變更區域設定,而這會同時影響所有執行緒。

若要將字串 $str 剖析為浮點數,請使用

$! = 0;
($num, $n_unparsed) = POSIX::strtod($str);

第二個傳回項目和 $! 可用於檢查輸入是否有效

if (($str eq '') || ($n_unparsed != 0) || $!) {
    die "Non-numeric input $str" . ($! ? ": $!\n" : "\n");
}

當在純量環境中呼叫 strtod 時,會傳回已剖析的數字。

strtok

未實作。strtok() 是 C 語言專用,請改用正規表示式,請參閱 perlre,或 "split" in perlfunc

strtol

字串轉換為 (長) 整數。傳回已剖析的數字和字串中未剖析部分的字元數。真正符合 POSIX 規範的系統會設定 $! ($ERRNO) 以表示轉換錯誤,因此請在呼叫 strtol 之前清除 $!。不過,不符合 POSIX 規範的系統可能不會檢查溢位,因此永遠不會設定 $!

strtol 應遵循任何 POSIX setlocale() 設定。

若要將字串 $str 剖析為某個基底 $base 的數字,請使用

$! = 0;
($num, $n_unparsed) = POSIX::strtol($str, $base);

基底應為零或介於 2 到 36(含)之間。當基底為零或省略時,strtol 會使用字串本身來判斷基底:開頭為 "0x" 或 "0X" 表示十六進位;開頭為 "0" 表示八進位;任何其他開頭字元表示十進位。因此,"1234" 會剖析為十進位數字,"01234" 會剖析為八進位數字,而 "0x1234" 會剖析為十六進位數字。

第二個傳回項目和 $! 可用於檢查輸入是否有效

if (($str eq '') || ($n_unparsed != 0) || !$!) {
    die "Non-numeric input $str" . $! ? ": $!\n" : "\n";
}

當在純量環境中呼叫 strtol 時,會傳回已剖析的數字。

strtold

"strtod" 類似,但適用於長雙精度浮點數。僅在系統支援長雙精度浮點數時才會定義。

strtoul

字串轉換為無號 (長) 整數。strtoul()strtol() 相同,但 strtoul() 只剖析無號整數。有關詳細資訊,請參閱 "strtol"

注意:有些廠商提供 strtod()strtol(),但不提供 strtoul()。其他提供 strtoul() 的廠商會將 "-1" 剖析為有效值。

strxfrm

字串轉換。傳回已轉換的字串。

$dst = POSIX::strxfrm( $src );

eqcmp 搭配使用,作為 "strcoll" 的替代方案。

由於 Perl 可以透明地執行此操作,因此並非真正需要,請參閱 perllocale

與 libc strxfrm 不同,這允許在輸入 $src 中使用 NUL 字元。

將字串編碼在一個地區設定 (例如,ISO-8859-6,阿拉伯語) 中,並根據另一個地區設定 (例如,ISO-8859-7,希臘語) 對其進行整理,這沒有意義。Perl 假設目前的 LC_CTYPE 地區設定正確表示 $src 的編碼,並忽略 LC_COLLATE 的值。

sysconf

擷取系統可設定變數的值。

以下程式碼將取得電腦的時脈速度。

$clock_ticks = POSIX::sysconf( &POSIX::_SC_CLK_TCK );

失敗時傳回 undef

system

這與 Perl 的內建 system() 函式相同,請參閱 "system" in perlfunc

tan

這與 C 函式 tan() 相同,傳回數值參數的正切。另請參閱 Math::Trig

tanh

這與 C 函式 tanh() 相同,傳回數值參數的雙曲正切。另請參閱 Math::Trig

tcdrain

這類似於 C 函式 tcdrain(),用於清空其參數串流的輸出佇列。

失敗時傳回 undef

tcflow

這類似於 C 函式 tcflow(),用於控制其參數串流的流程。

失敗時傳回 undef

tcflush

這類似於 C 函式 tcflush(),用於清除其參數串流的 I/O 緩衝區。

失敗時傳回 undef

tcgetpgrp

這與 C 函式 tcgetpgrp() 相同,用於傳回控制終端的 foreground process group 的 process group 識別碼。

tcsendbreak

這類似於 C 函式 tcsendbreak(),用於在參數串流中傳送中斷。

失敗時傳回 undef

tcsetpgrp

這類似於 C 函式 tcsetpgrp(),用於設定控制終端的 foreground process group 的 process group 識別碼。

失敗時傳回 undef

tgamma

Gamma 函數 [C99]。已在 Perl v5.22 中新增。

另請參閱 "lgamma"

time

這與 Perl 內建的 time() 函數相同,用於傳回自紀元以來(無論系統為何)的秒數,請參閱 "time" in perlfunc

times

times() 函數傳回自過去某個時間點(例如系統啟動)以來經過的真實時間、此程序的使用者和系統時間,以及子程序使用的使用者和系統時間。所有時間均以時脈週期傳回。

    ($realtime, $user, $system, $cuser, $csystem)
	= POSIX::times();

注意:Perl 內建的 times() 函數傳回四個值,以秒為單位。

tmpfile

未實作。請改用 IO::File::new_tmpfile() 方法,或參閱 File::Temp

tmpnam

基於安全考量,這些考量可能詳述在系統的 C 函式庫 tmpnam() 函數的說明文件中,自 Perl v5.26 起,此介面不再提供;請改用 File::Temp

tolower

此函數已自 Perl v5.26 起移除。這與 C 函數相同,但它可以套用至單一字元或整個字串,而且目前運作方式就像區域設定永遠是「C」一樣。請考慮使用 lc() 函數,請參閱 "lc" in perlfunc,請參閱 "lc" in perlfunc,或是在雙引號字串中使用等效的 \L 算子。

toupper

此函數已自 Perl v5.26 起移除。這與 C 函數類似,但它可以套用至單一字元或整個字串,而且目前運作方式就像區域設定永遠是「C」一樣。請考慮使用 uc() 函數,請參閱 "uc" in perlfunc,或是在雙引號字串中使用等效的 \U 算子。

trunc

傳回自參數 [C99] 朝零方向取整的整數。已在 Perl v5.22 中新增。

另請參閱 「ceil」「floor」「round」

ttyname

這與 C 函式 ttyname() 相同,用於傳回目前終端的名稱。

tzname

tzname 變數中擷取時間轉換資訊。

POSIX::tzset();
($std, $dst) = POSIX::tzname();
tzset

這與 C 函式 tzset() 相同,用於根據環境變數 TZ 設定目前時區,供 ctime()localtime()mktime()strftime() 函式使用。

umask

這與 Perl 內建的 umask() 函式相同,用於設定 (和查詢) 檔案建立權限遮罩,請參閱 perlfunc 中的「umask」

uname

取得目前作業系統的名稱。

($sysname, $nodename, $release, $version, $machine)
	= POSIX::uname();

請注意,各個欄位的實際意義並未標準化,不要期待有很高的可攜性。$sysname 可能會是作業系統的名稱,$nodename 可能會是主機的名稱,$release 可能會是作業系統的 (主要) 發行版本號碼,$version 可能會是作業系統的 (次要) 發行版本號碼,而 $machine 可能會是硬體識別碼。也許。

ungetc

未實作。請改用 IO::Handle::ungetc() 方法。

這與 Perl 內建的 unlink() 函式相同,用於移除檔案,請參閱 perlfunc 中的「unlink」

utime

這與 Perl 內建的 utime() 函式相同,用於變更檔案和目錄的時間戳記,請參閱 perlfunc 中的「utime」

vfprintf

未實作。vfprintf() 是 C 語言專用,請改用 "printf" in perlfunc

vprintf

未實作。vprintf() 是 C 語言專用,請改用 "printf" in perlfunc

vsprintf

未實作。vsprintf() 是 C 語言專用,請改用 "sprintf" in perlfunc

wait

這與 Perl 內建的 wait() 函式相同,請參閱 "wait" in perlfunc

waitpid

等待子程序變更狀態。這與 Perl 內建的 waitpid() 函式相同,請參閱 "waitpid" in perlfunc

$pid = POSIX::waitpid( -1, POSIX::WNOHANG );
print "status = ", ($? / 256), "\n";

請參閱 "mblen"

wctomb

這與未執行緒化 Perl 中的 C 函式 wctomb() 相同。在執行緒化 Perl 中,如果可行,它會透明地(幾乎)替換為更安全的執行緒 wcrtomb(3),而不是 wctomb

核心 Perl 不支援寬位元組和多位元組區域設定,Unicode UTF-8 區域設定除外。此函式與 "mblen""mbtowc" 結合使用,可用於執行其他類型多位元組區域設定的解碼/編碼。

undef 用作此函式的第一個參數,以達到將 NULL 傳遞為 wctomb 的第一個參數的效果。這會略過第二個參數,並將任何位移狀態重設為其初始值。如果替換了 wcrtomb,回傳值是未定義的,因此您永遠不應依賴它。

當第一個參數為標量時,標量第二個參數中包含的碼點會轉換成多位元組字串,並儲存在第一個參數標量中。這會根據目前程式底層的區域設定,而與函式是否從 use locale 範圍內的 Perl 程式碼呼叫無關。傳回值為儲存的位元組數目;如果碼點無法在目前的區域設定中表示,則為負值。Perl 沒有嘗試隱藏程式碼中 wctombwcrtomb 之間 errno 設定的任何差異。它會在呼叫它們之前將 errno 設定為 0。

write

寫入檔案。這會使用檔案描述符,例如透過呼叫 POSIX::open 取得的檔案描述符。

$fd = POSIX::open( "foo", &POSIX::O_WRONLY );
$buf = "hello";
$bytes = POSIX::write( $fd, $buf, 5 );

失敗時傳回 undef

另請參閱 "perlfunc 中的 syswrite"

類別

POSIX::SigAction

new

建立新的 POSIX::SigAction 物件,它對應到 C struct sigaction。當不再需要此物件時,它會自動銷毀。第一個參數為處理常式,一個子參考。第二個參數為 POSIX::SigSet 物件,它預設為空集合。第三個參數包含 sa_flags,它預設為 0。

$sigset = POSIX::SigSet->new(SIGINT, SIGQUIT);
$sigaction = POSIX::SigAction->new(
		\&handler, $sigset, &POSIX::SA_NOCLDSTOP
	     );

POSIX::SigAction 物件用於 POSIX::sigaction() 函式。

handler
mask
flags

存取函式,用於取得/設定 SigAction 物件的值。

$sigset = $sigaction->mask;
$sigaction->flags(&POSIX::SA_RESTART);
safe

SigAction 物件的「安全訊號」旗標的存取函式;有關安全(又稱「延遲」)訊號的一般資訊,請參閱 perlipc。如果您想安全地處理訊號,請使用這個存取函式在 POSIX::SigAction 物件中設定「安全」旗標

$sigaction->safe(1);

您也可以檢查輸出動作物件的「安全」旗標,此旗標會在傳遞給 POSIX::sigaction() 作為第三個參數時填入

sigaction(SIGINT, $new_action, $old_action);
if ($old_action->safe) {
    # previous SIGINT handler used safe signals
}

POSIX::SigRt

%SIGRT

POSIX 即時訊號處理常式的雜湊。它是標準 %SIG 的延伸,$POSIX::SIGRT{SIGRTMIN} 大致等於 $SIG{SIGRTMIN},但正確的 POSIX 移動(如下所示)是使用 POSIX::SigSetPOSIX::sigaction,而不是存取 %SIG

您可以設定 %POSIX::SIGRT 元素來設定 POSIX 即時訊號處理常式,對元素使用 deleteexists,並對 %POSIX::SIGRT 使用 scalar 來找出有多少可用的 POSIX 即時訊號 (SIGRTMAX - SIGRTMIN + 1SIGRTMAX 是有效的 POSIX 即時訊號)

設定 %SIGRT 元素等於呼叫這個

sub new {
  my ($rtsig, $handler, $flags) = @_;
  my $sigset = POSIX::SigSet($rtsig);
  my $sigact = POSIX::SigAction->new($handler,$sigset,$flags);
  sigaction($rtsig, $sigact);
}

旗標預設為零,如果您想要不同的旗標,您可以對 $POSIX::SigRt::SIGACTION_FLAGS 使用 local,或者您可以衍生自 POSIX::SigRt 並定義您自己的 new()%SIGRT 的繫結雜湊 STORE 方法會呼叫 new($rtsig, $handler, $SIGACTION_FLAGS),其中 $rtsig 的範圍從零到 SIGRTMAX - SIGRTMIN + 1)

就像任何訊號一樣,您可以使用 sigaction($rtsig, undef, $oa) 來擷取已安裝的訊號處理常式(或更確切地說,是訊號動作)

注意: POSIX 即時訊號是否真的在您的系統中運作,或者 Perl 是否已編譯成可以與其一起運作,不在此討論範圍內。

SIGRTMIN

傳回可用的最小 POSIX 即時訊號號碼,或者如果沒有可用的 POSIX 即時訊號,則傳回 undef

SIGRTMAX

傳回可用的最大 POSIX 即時訊號號碼,或在沒有可用的 POSIX 即時訊號時傳回 undef

POSIX::SigSet

new

建立新的 SigSet 物件。此物件會在不再需要時自動銷毀。可提供參數來初始化設定集。

建立一個空的設定集。

$sigset = POSIX::SigSet->new;

建立一個含有 SIGUSR1 的設定集。

$sigset = POSIX::SigSet->new( &POSIX::SIGUSR1 );

如果無法將任何提供的訊號加入設定集,則會擲回錯誤。

addset

將訊號加入 SigSet 物件。

$sigset->addset( &POSIX::SIGUSR2 );

失敗時傳回 undef

delset

從 SigSet 物件移除訊號。

$sigset->delset( &POSIX::SIGUSR2 );

失敗時傳回 undef

emptyset

將 SigSet 物件初始化為空。

$sigset->emptyset();

失敗時傳回 undef

fillset

將 SigSet 物件初始化為包含所有訊號。

$sigset->fillset();

失敗時傳回 undef

ismember

測試 SigSet 物件是否包含特定訊號。

if( $sigset->ismember( &POSIX::SIGUSR1 ) ){
	print "contains SIGUSR1\n";
}

POSIX::Termios

new

建立新的 Termios 物件。此物件會在不再需要時自動銷毀。Termios 物件對應到 termios C 結構。new() 會配置一個新的,getattr() 會從檔案描述符填入,而 setattr() 會將檔案描述符的參數設定為與 Termios 的內容相符。

$termios = POSIX::Termios->new;
getattr

取得終端機控制屬性。

取得 stdin 的屬性。

$termios->getattr( 0 ) # Recommended for clarity.
$termios->getattr()

取得 stdout 的屬性。

$termios->getattr( 1 )

失敗時傳回 undef

getcc

termios 物件的 c_cc 欄位擷取值。c_cc 欄位是一個陣列,所以必須指定索引。

$c_cc[1] = $termios->getcc(1);
getcflag

擷取 termios 物件的 c_cflag 欄位。

$c_cflag = $termios->getcflag;
getiflag

擷取 termios 物件的 c_iflag 欄位。

$c_iflag = $termios->getiflag;
getispeed

擷取輸入波特率。

$ispeed = $termios->getispeed;
getlflag

擷取 termios 物件的 c_lflag 欄位。

$c_lflag = $termios->getlflag;
getoflag

擷取 termios 物件的 c_oflag 欄位。

$c_oflag = $termios->getoflag;
getospeed

擷取輸出波特率。

$ospeed = $termios->getospeed;
setattr

設定終端控制屬性。

立即為 stdout 設定屬性。

$termios->setattr( 1, &POSIX::TCSANOW );

失敗時傳回 undef

setcc

設定 termios 物件的 c_cc 欄位中的值。c_cc 欄位是一個陣列,因此必須指定索引。

$termios->setcc( &POSIX::VEOF, 1 );
setcflag

設定 termios 物件的 c_cflag 欄位。

$termios->setcflag( $c_cflag | &POSIX::CLOCAL );
setiflag

設定 termios 物件的 c_iflag 欄位。

$termios->setiflag( $c_iflag | &POSIX::BRKINT );
setispeed

設定輸入波特率。

$termios->setispeed( &POSIX::B9600 );

失敗時傳回 undef

setlflag

設定 termios 物件的 c_lflag 欄位。

$termios->setlflag( $c_lflag | &POSIX::ECHO );
setoflag

設定 termios 物件的 c_oflag 欄位。

$termios->setoflag( $c_oflag | &POSIX::OPOST );
setospeed

設定輸出波特率。

$termios->setospeed( &POSIX::B9600 );

失敗時傳回 undef

波特率值

B38400 B75 B200 B134 B300 B1800 B150 B0 B19200 B1200 B9600 B600 B4800 B50 B2400 B110

終端介面值

TCSADRAIN TCSANOW TCOON TCIOFLUSH TCOFLUSH TCION TCIFLUSH TCSAFLUSH TCIOFF TCOOFF

c_cc 欄位值

VEOF VEOL VERASE VINTR VKILL VQUIT VSUSP VSTART VSTOP VMIN VTIME NCCS

c_cflag 欄位值

CLOCAL CREAD CSIZE CS5 CS6 CS7 CS8 CSTOPB HUPCL PARENB PARODD

c_iflag 欄位值

BRKINT ICRNL IGNBRK IGNCR IGNPAR INLCR INPCK ISTRIP IXOFF IXON PARMRK

c_lflag 欄位值

ECHO ECHOE ECHOK ECHONL ICANON IEXTEN ISIG NOFLSH TOSTOP

c_oflag 欄位值

OPOST

PATHNAME 常數

常數

_PC_CHOWN_RESTRICTED _PC_LINK_MAX _PC_MAX_CANON _PC_MAX_INPUT _PC_NAME_MAX _PC_NO_TRUNC _PC_PATH_MAX _PC_PIPE_BUF _PC_VDISABLE

POSIX 常數

常數

_POSIX_ARG_MAX _POSIX_CHILD_MAX _POSIX_CHOWN_RESTRICTED _POSIX_JOB_CONTROL _POSIX_LINK_MAX _POSIX_MAX_CANON _POSIX_MAX_INPUT _POSIX_NAME_MAX _POSIX_NGROUPS_MAX _POSIX_NO_TRUNC _POSIX_OPEN_MAX _POSIX_PATH_MAX _POSIX_PIPE_BUF _POSIX_SAVED_IDS _POSIX_SSIZE_MAX _POSIX_STREAM_MAX _POSIX_TZNAME_MAX _POSIX_VDISABLE _POSIX_VERSION

資源常數

使用 :sys_resource_h 標籤匯入。

常數

Perl v5.28 新增

PRIO_PROCESS PRIO_PGRP PRIO_USER

系統組態

常數

_SC_ARG_MAX _SC_CHILD_MAX _SC_CLK_TCK _SC_JOB_CONTROL _SC_NGROUPS_MAX _SC_OPEN_MAX _SC_PAGESIZE _SC_SAVED_IDS _SC_STREAM_MAX _SC_TZNAME_MAX _SC_VERSION

錯誤代碼

常數

E2BIG EACCES EADDRINUSE EADDRNOTAVAIL EAFNOSUPPORT EAGAIN EALREADY EBADF EBADMSG EBUSY ECANCELED ECHILD ECONNABORTED ECONNREFUSED ECONNRESET EDEADLK EDESTADDRREQ EDOM EDQUOT EEXIST EFAULT EFBIG EHOSTDOWN EHOSTUNREACH EIDRM EILSEQ EINPROGRESS EINTR EINVAL EIO EISCONN EISDIR ELOOP EMFILE EMLINK EMSGSIZE ENAMETOOLONG ENETDOWN ENETRESET ENETUNREACH ENFILE ENOBUFS ENODATA ENODEV ENOENT ENOEXEC ENOLCK ENOLINK ENOMEM ENOMSG ENOPROTOOPT ENOSPC ENOSR ENOSTR ENOSYS ENOTBLK ENOTCONN ENOTDIR ENOTEMPTY ENOTRECOVERABLE ENOTSOCK ENOTSUP ENOTTY ENXIO EOPNOTSUPP EOTHER EOVERFLOW EOWNERDEAD EPERM EPFNOSUPPORT EPIPE EPROCLIM EPROTO EPROTONOSUPPORT EPROTOTYPE ERANGE EREMOTE ERESTART EROFS ESHUTDOWN ESOCKTNOSUPPORT ESPIPE ESRCH ESTALE ETIME ETIMEDOUT ETOOMANYREFS ETXTBSY EUSERS EWOULDBLOCK EXDEV

檔案控制

常數

FD_CLOEXEC F_DUPFD F_GETFD F_GETFL F_GETLK F_OK F_RDLCK F_SETFD F_SETFL F_SETLK F_SETLKW F_UNLCK F_WRLCK O_ACCMODE O_APPEND O_CREAT O_EXCL O_NOCTTY O_NONBLOCK O_RDONLY O_RDWR O_TRUNC O_WRONLY

浮點數

常數

DBL_DIG DBL_EPSILON DBL_MANT_DIG DBL_MAX DBL_MAX_10_EXP DBL_MAX_EXP DBL_MIN DBL_MIN_10_EXP DBL_MIN_EXP FLT_DIG FLT_EPSILON FLT_MANT_DIG FLT_MAX FLT_MAX_10_EXP FLT_MAX_EXP FLT_MIN FLT_MIN_10_EXP FLT_MIN_EXP FLT_RADIX FLT_ROUNDS LDBL_DIG LDBL_EPSILON LDBL_MANT_DIG LDBL_MAX LDBL_MAX_10_EXP LDBL_MAX_EXP LDBL_MIN LDBL_MIN_10_EXP LDBL_MIN_EXP

浮點數環境

常數

FE_DOWNWARD FE_TONEAREST FE_TOWARDZERO FE_UPWARD 在支援的系統上。

限制

常數

ARG_MAX CHAR_BIT CHAR_MAX CHAR_MIN CHILD_MAX INT_MAX INT_MIN LINK_MAX LONG_MAX LONG_MIN MAX_CANON MAX_INPUT MB_LEN_MAX NAME_MAX NGROUPS_MAX OPEN_MAX PATH_MAX PIPE_BUF SCHAR_MAX SCHAR_MIN SHRT_MAX SHRT_MIN SSIZE_MAX STREAM_MAX TZNAME_MAX UCHAR_MAX UINT_MAX ULONG_MAX USHRT_MAX

區域設定

常數

LC_ALL LC_COLLATE LC_CTYPE LC_MONETARY LC_NUMERIC LC_TIME LC_MESSAGES 在支援的系統上。

數學

常數

HUGE_VAL

Perl v5.22 新增

FP_ILOGB0 FP_ILOGBNAN FP_INFINITE FP_NAN FP_NORMAL FP_SUBNORMAL FP_ZERO INFINITY NAN Inf NaN M_1_PI M_2_PI M_2_SQRTPI M_E M_LN10 M_LN2 M_LOG10E M_LOG2E M_PI M_PI_2 M_PI_4 M_SQRT1_2 M_SQRT2 在支援 C99 的系統上。

訊號

常數

SA_NOCLDSTOP SA_NOCLDWAIT SA_NODEFER SA_ONSTACK SA_RESETHAND SA_RESTART SA_SIGINFO SIGABRT SIGALRM SIGCHLD SIGCONT SIGFPE SIGHUP SIGILL SIGINT SIGKILL SIGPIPE SIGQUIT SIGSEGV SIGSTOP SIGTERM SIGTSTP SIGTTIN SIGTTOU SIGUSR1 SIGUSR2 SIG_BLOCK SIG_DFL SIG_ERR SIG_IGN SIG_SETMASK SIG_UNBLOCK

Perl v5.24 新增

ILL_ILLOPC ILL_ILLOPN ILL_ILLADR ILL_ILLTRP ILL_PRVOPC ILL_PRVREG ILL_COPROC ILL_BADSTK FPE_INTDIV FPE_INTOVF FPE_FLTDIV FPE_FLTOVF FPE_FLTUND FPE_FLTRES FPE_FLTINV FPE_FLTSUB SEGV_MAPERR SEGV_ACCERR BUS_ADRALN BUS_ADRERR BUS_OBJERR TRAP_BRKPT TRAP_TRACE CLD_EXITED CLD_KILLED CLD_DUMPED CLD_TRAPPED CLD_STOPPED CLD_CONTINUED POLL_IN POLL_OUT POLL_MSG POLL_ERR POLL_PRI POLL_HUP SI_USER SI_QUEUE SI_TIMER SI_ASYNCIO SI_MESGQ

狀態

常數

S_IRGRP S_IROTH S_IRUSR S_IRWXG S_IRWXO S_IRWXU S_ISGID S_ISUID S_IWGRP S_IWOTH S_IWUSR S_IXGRP S_IXOTH S_IXUSR

巨集

S_ISBLK S_ISCHR S_ISDIR S_ISFIFO S_ISLNK S_ISREG S_ISSOCK

標準函式庫

常數

EXIT_FAILURE EXIT_SUCCESS MB_CUR_MAX RAND_MAX

STDIO

常數

BUFSIZ EOF FILENAME_MAX L_ctermid L_cuserid TMP_MAX

TIME

常數

CLK_TCK CLOCKS_PER_SEC

UNISTD

常數

R_OK SEEK_CUR SEEK_END SEEK_SET STDIN_FILENO STDOUT_FILENO STDERR_FILENO W_OK X_OK

WAIT

常數

WNOHANG WUNTRACED

WNOHANG

不要暫停呼叫程序,直到子程序變更狀態,而立即傳回。

WUNTRACED

捕捉已停止的子程序。

巨集

WIFEXITED WEXITSTATUS WIFSIGNALED WTERMSIG WIFSTOPPED WSTOPSIG

WIFEXITED

如果子程序正常結束(exit() 或從 main() 結尾處中斷),WIFEXITED(${^CHILD_ERROR_NATIVE}) 傳回 true

WEXITSTATUS

WEXITSTATUS(${^CHILD_ERROR_NATIVE}) 傳回子程序的正常結束狀態(僅當 WIFEXITED(${^CHILD_ERROR_NATIVE}) 為 true 時才有意義)

WIFSIGNALED

如果子程序因訊號而終止,WIFSIGNALED(${^CHILD_ERROR_NATIVE}) 傳回 true

WTERMSIG

WTERMSIG(${^CHILD_ERROR_NATIVE}) 傳回子程序終止的訊號(僅當 WIFSIGNALED(${^CHILD_ERROR_NATIVE}) 為 true 時才有意義)

WIFSTOPPED

WIFSTOPPED(${^CHILD_ERROR_NATIVE})如果子程序目前已停止(僅當您指定 waitpid() 的 WUNTRACED 旗標時才會發生),則傳回 true

WSTOPSIG

WSTOPSIG(${^CHILD_ERROR_NATIVE})傳回子程序停止的訊號(僅當 WIFSTOPPED(${^CHILD_ERROR_NATIVE}) 為 true 時才有意義)

WINSOCK

(僅限 Windows)

常數

Perl v5.24 新增

WSAEINTR WSAEBADF WSAEACCES WSAEFAULT WSAEINVAL WSAEMFILE WSAEWOULDBLOCK WSAEINPROGRESS WSAEALREADY WSAENOTSOCK WSAEDESTADDRREQ WSAEMSGSIZE WSAEPROTOTYPE WSAENOPROTOOPT WSAEPROTONOSUPPORT WSAESOCKTNOSUPPORT WSAEOPNOTSUPP WSAEPFNOSUPPORT WSAEAFNOSUPPORT WSAEADDRINUSE WSAEADDRNOTAVAIL WSAENETDOWN WSAENETUNREACH WSAENETRESET WSAECONNABORTED WSAECONNRESET WSAENOBUFS WSAEISCONN WSAENOTCONN WSAESHUTDOWN WSAETOOMANYREFS WSAETIMEDOUT WSAECONNREFUSED WSAELOOP WSAENAMETOOLONG WSAEHOSTDOWN WSAEHOSTUNREACH WSAENOTEMPTY WSAEPROCLIM WSAEUSERS WSAEDQUOT WSAESTALE WSAEREMOTE WSAEDISCON WSAENOMORE WSAECANCELLED WSAEINVALIDPROCTABLE WSAEINVALIDPROVIDER WSAEPROVIDERFAILEDINIT WSAEREFUSED