2009-11-23 8 views
6

Mam kod z http://www.hyllander.org/node/23 który używa $* („dolara gwiazdkę” lub „dolar gwiazda”), ale moja wersja raportów Perl

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

Czy wiesz, jakie były skutki uboczne robi

$*=1 

Czy to w jakiś sposób wpływa na funkcje takie jak split lub tokenizers lub wyrażenia regularne?

+1

Wszystkie zmienne Perla są udokumentowane w perlvar. –

+4

O ile nie używasz perl 5.10. Dokumentuje wszystkie zmienne Perla, ale nie te, które zostały wycofane. – innaM

+0

Możesz znaleźć dowolną wersję dokumentacji na przykład http://search.cpan.org/dist/perl-5.8.5 – ysth

Odpowiedz

16

Oto część wyjściu perldoc perlvar:

$ * Zestaw do niezerowej wartości całkowitej zrobić multi-line dopasowania ciągu znaków, 0 (lub niezdefiniowany) powiedzieć Perl, że można założyć, że ciągi zawierają pojedynczą linię , w celu zoptymalizowania dopasowań wzorców . Dopasowania do wzorów na ciągach zawierających wiele linii nowej może spowodować dezorientujące wyniki, gdy $ * ma wartość 0 lub nieokreśloną. Wartością domyślną jest niezdefiniowana. (Mnemonik: * dopasowuje wiele rzeczy.) Ta zmienna wpływa na interpretację tylko "^" i "$". Dosłowna nowa linia może być wyszukiwana nawet, gdy "$ * == 0".

użycie $ * jest przestarzałe w nowoczesnej Perl, wyparta przez "/ s" i "m" /modyfikatorów na dopasowywaniu wzorców.

Przypisanie wartości non-numeryczną do $ * wyzwala ostrzeżenie (i czyni $ * akt jeśli "$ * == 0"), podczas przypisywania wartość liczbową do $ * sprawia, że ​​ niejawny " int "stosuje się do wartości .

+0

Dzięki! (Nie mogłem znaleźć "$ *" za pomocą Google'a, ponieważ wyszukiwarka ignoruje takie słowa kluczowe.) – scraimer

+2

@scraimer: Najpierw należy zapoznać się z dokumentacją zainstalowaną na komputerze: '$ perldoc perltoc' –

+0

Z tym, że dokumentacja zainstalowana mój komputer jest dla perl 5.10, a ponieważ '$ *' zostało przerwane przez tę wersję, dokumentacja już go nie ma. – scraimer