我有一些来自http://www.hyllander.org/node/23的代码使用$*
(“美元星号”或“美元星号”),但我的 perl 版本报告:
$* is no longer supported at migrate.pl line 284.
你知道这样做的副作用是什么吗
$*=1
这是否会以某种方式影响诸如split
标记器或正则表达式之类的函数?
我有一些来自http://www.hyllander.org/node/23的代码使用$*
(“美元星号”或“美元星号”),但我的 perl 版本报告:
$* is no longer supported at migrate.pl line 284.
你知道这样做的副作用是什么吗
$*=1
这是否会以某种方式影响诸如split
标记器或正则表达式之类的函数?
这是输出的一部分perldoc perlvar
:
$* 设置为非零整数值以在字符串中进行多行匹配,0(或未定义)告诉 Perl 它可以假设字符串包含单行,以优化模式匹配。当 $* 为 0 或未定义时,包含多个换行符的字符串的模式匹配会产生令人困惑的结果。默认未定义。(助记符:* 匹配多个事物。)此变量仅影响“^”和“$”的解释。即使“$* == 0”,也可以搜索文字换行符。
在现代 Perl 中不推荐使用 $*,由模式匹配中的 "/s" 和 "/m" 修饰符取代。
为 $* 分配一个非数字值会触发警告(如果“$* == 0”,则使 $* 起作用),而为 $* 分配一个数字值会使隐式“int”应用于该值。