6

我有一些来自http://www.hyllander.org/node/23的代码使用$*(“美元星号”或“美元星号”),但我的 perl 版本报告:

$* is no longer supported at migrate.pl line 284.

你知道这样做的副作用是什么吗

$*=1

这是否会以某种方式影响诸如split标记器或正则表达式之类的函数?

4

1 回答 1

16

这是输出的一部分perldoc perlvar

$* 设置为非零整数值以在字符串中进行多行匹配,0(或未定义)告诉 Perl 它可以假设字符串包含单行,以优化模式匹配。当 $* 为 0 或未定义时,包含多个换行符的字符串的模式匹配会产生令人困惑的结果。默认未定义。(助记符:* 匹配多个事物。)此变量仅影响“^”和“$”的解释。即使“$* == 0”,也可以搜索文字换行符。

在现代 Perl 中不推荐使用 $*,由模式匹配中的 "/s" 和 "/m" 修饰符取代。

为 $* 分配一个非数字值会触发警告(如果“$* == 0”,则使 $* 起作用),而为 $* 分配一个数字值会使隐式“int”应用于该值。

于 2009-11-23T09:33:49.377 回答