2009-11-23 76 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