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 perlfunc 和 Carp 模組來達成類似的事情。
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
x
和 y
的最大值,但當任一為 NaN
時,傳回另一個 [C99]。於 Perl v5.22 中新增。
my $max = POSIX::fmax($x, $y);
fmin
x
和 y
的最小值,但當任一為 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
(也包括 isgreaterequal
、isless
、islessequal
、islessgreater
、isunordered
)
處理 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"。
link
這與 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_precedes
和 int_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 中新增。
由於疏忽,目前未預設匯出此項目,或作為 :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 絕不會試圖隱藏 mblen
和 mbrlen
之間 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 沒有嘗試隱藏 mbtowc
和 mbrtowc
之間 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
給定 x
和 y
,傳回值 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 中新增。
scalbn
傳回 x * 2**y
[C99]。在 Perl v5.22 中新增。
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
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
物件作為 action
和 oldaction
參數(oldaction 也可以只是一個雜湊參考)。請參閱系統的 sigaction
manpage 以取得詳細資料,另請參閱 "POSIX::SigRt"。
語法
sigaction(signal, action, oldaction = 0)
失敗時傳回 undef
。signal
必須是數字(例如 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
變更和/或檢查呼叫程序的訊號遮罩。這會對 sigset
和 oldsigset
參數使用 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 特有的,請改用 eq
或 cmp
,請參閱 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 );
與 eq
或 cmp
搭配使用,作為 "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 中新增。
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()
方法。
unlink
這與 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 沒有嘗試隱藏程式碼中 wctomb
和 wcrtomb
之間 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::SigSet
和 POSIX::sigaction
,而不是存取 %SIG
。
您可以設定 %POSIX::SIGRT
元素來設定 POSIX 即時訊號處理常式,對元素使用 delete
和 exists
,並對 %POSIX::SIGRT
使用 scalar
來找出有多少可用的 POSIX 即時訊號 (SIGRTMAX - SIGRTMIN + 1
,SIGRTMAX
是有效的 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
_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_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
BUFSIZ
EOF
FILENAME_MAX
L_ctermid
L_cuserid
TMP_MAX
CLK_TCK
CLOCKS_PER_SEC
R_OK
SEEK_CUR
SEEK_END
SEEK_SET
STDIN_FILENO
STDOUT_FILENO
STDERR_FILENO
W_OK
X_OK
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 時才有意義)
(僅限 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