Вопрос

У меня есть код из 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».

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top