locale - Perl pragma 用于使用或避免 POSIX 本地化以进行内置操作
请勿在有多个活动 线程 的脚本中使用此 pragma。本地化不属于单个线程。另一个线程可能随时更改本地化,这至少会导致给定线程在它不期望的本地化中运行。在某些平台上,还可能发生段错误。本地化更改不必是显式的;某些操作会导致 perl 本身更改本地化。只需执行 "use locale"
就会使你容易受到攻击。
@x = sort @y; # Native-platform/Unicode code point sort order
{
use locale;
@x = sort @y; # Locale-defined sort order
}
@x = sort @y; # Native-platform/Unicode code point sort order
# again
此 pragma 告诉编译器启用(或禁用)对内置操作使用 POSIX 本地化(例如,正则表达式的 LC_CTYPE、字符串比较的 LC_COLLATE 和数字格式化的 LC_NUMERIC)。每个“use locale”或“no locale”都会影响到封闭 BLOCK 结尾处的语句。
请参阅 perllocale 了解有关 Perl 如何支持本地化的更详细信息。
在没有本地化的系统上,此 pragma 将导致你的操作表现得如同在“C”本地化中;更改本地化的尝试将失败。