What did Perl's $* variable used to do?
Asked Answered
A

1

6

I have some code from http://www.hyllander.org/node/23 that uses $* ("dollar asterisk" or "dollar star"), but my version of perl reports:

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

Do you know what were the side-effects of doing

$*=1

Did that somehow affect functions like split or tokenizers or regular expressions?

Arjun answered 23/11, 2009 at 9:27 Comment(6)
All of Perl's variables are documented in perlvar.Mamie
Unless you are using perl 5.10. It documents all of Perl's variables, but not the discontinued ones.Boule
You can find any given version of documentation at e.g. search.cpan.org/dist/perl-5.8.5Ringdove
@ysth: Which... means you need to know in which version the variable was discontinued in... for a variable you know nothing about... (I guess this sounds like Helen Keller's tutor complaint about trying use a dictionary to find a word's spelling :-)Arjun
@scraimer: a little research isn't going to kill you. You might even learn something. There's a reason some people have the answers and some people have the questions. Which side do you want to be on?Mamie
I feel the point of SO is to bring those two groups together. The main reason I asked the question was so that the next person who searches in Google for "perl dollar star", or "perl dollar asterisk", will get to this page, and see the answer! Isn't that wonderful?Arjun
B
17

Here's part of the output of perldoc perlvar:

$* Set to a non-zero integer value to do multi-line matching within a string, 0 (or undefined) to tell Perl that it can assume that strings contain a single line, for the purpose of optimizing pattern matches. Pattern matches on strings containing multiple newlines can produce confusing results when $* is 0 or undefined. Default is undefined. (Mnemonic: * matches multiple things.) This variable influences the interpretation of only "^" and "$". A literal newline can be searched for even when "$* == 0".

Use of $* is deprecated in modern Perl, supplanted by the "/s" and "/m" modifiers on pattern matching.

Assigning a non-numerical value to $* triggers a warning (and makes $* act if "$* == 0"), while assigning a numerical value to $* makes that an implicit "int" is applied on the value.

Boule answered 23/11, 2009 at 9:33 Comment(4)
Thanks! (I was having trouble finding the $* using google, since that search engine ignores such keywords.)Arjun
@scraimer: You should first consult the documentation installed on your computer: $ perldoc perltocSelfcontent
Except that the documentation installed on my computer is for perl 5.10, and since $* has been discontinued by that version, the documentation no longer has it.Arjun
Nothing is stopping you from looking the documentation for earlier versions of Perl.Mamie

© 2022 - 2024 — McMap. All rights reserved.