2009-11-23 77 views
6

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

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

你知道什么是做

的副作用
$*=1 

这是否影响功能,如split或标记或正则表达式?

+1

Perl的所有变量都记录在perlvar中。 – 2009-11-23 11:54:26

+4

除非你使用perl 5.10。它记录了所有Perl的变量,但不是已停用的变量。 – innaM 2009-11-23 15:09:22

+0

你可以在例如http://search.cpan.org/dist/perl-5.8.5 – ysth 2009-11-24 04:21:43

回答

16

这里是perldoc perlvar输出的一部分:

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

使用$ *被弃用现代 Perl中,由 “/ s” 和 “/ M” 修饰模式匹配所取代。

分配的非数值为$ * 触发警告(和使得$ *行为 如果“$ * == 0”),而分配 数值为$ *使得该一个 隐含的“ int“应用于 值。

+0

谢谢! (我在使用谷歌搜索'$ *'时遇到了麻烦,因为搜索引擎忽略了这些关键字。) – scraimer 2009-11-23 09:41:53

+2

@scraimer:您应该首先查阅您计算机上安装的文档:'$ perldoc perltoc' – 2009-11-23 14:48:11

+0

除了安装文档我的电脑是用于perl 5.10的,由于'$ *'已经被该版本中止,文档不再有它。 – scraimer 2009-11-24 08:22:15