Что раньше делала переменная $* в Perl?
-
21-09-2019 - |
Вопрос
У меня есть код из http://www.hyllander.org/node/23 который использует $*
(«долларовая звездочка» или «долларовая звезда»), но моя версия Perl сообщает:
$* is no longer supported at migrate.pl line 284.
Знаете ли вы, каковы были побочные эффекты от выполнения
$*=1
Повлияло ли это как-то на такие функции, как split
или токенизаторы или регулярные выражения?
Решение
Вот часть вывода perldoc perlvar
:
$* Установите на ненулевое целочисленное значение для выполнения многострочного сопоставления в строке, 0 (или неопределенного), чтобы сказать Perl, что он может предположить, что строки содержат одну строку, с целью оптимизации совпадений шаблонов.Матч с шаблонами на строках, содержащих несколько новейсов, могут дать запутанные результаты, когда $* равен 0 или не определен.По умолчанию не определен.(Мнемоника:* Соответствует нескольким вещам.) Эта переменная влияет на интерпретацию только "^" и "$".Буквальный новой линии можно найти, даже когда «$* == 0».
Использование $* устарело в современном Perl, вытесненном модификаторами «/s» и «/M» при сопоставлении рисунков.
Присвоение неочевидного значения $* запускает предупреждение (и делает $* act, если «$* == 0»), в то же время присваивая численное значение $*, что применяется к значению неявного «int».