perl中的语言环境设置是全局的吗?

Eug*_*ash 3 format perl locale pragma

我正在调试一个看起来像这样的perl脚本(简化):

#!/usr/bin/perl    
use strict;
use warnings;

use Evil::Module;

printf "%.3f\n", 0.1;
Run Code Online (Sandbox Code Playgroud)

此脚本输出0,100(注意,而不是.).如果我注释掉use Evil::Module语句,输出将是0.100.

我相信这与模块中的区域设置有关.但是locale是一个词法编译指示(根据联机帮助页),并且它不在脚本中使用.这里发生了什么事?

mob*_*mob 5

use locale编译指示是词法,但如果Evil :: Module模块使用POSIX::setlocale,则语言环境更改是全局的.

有关perldoc perllocale更多信息,请参阅