Perl позволяет вставлять произвольный код в качестве выражений замены в регулярные выражения.
$&
- это строка, соответствующая последнему совпадению с шаблоном - в этом случае используется некоторое количество символов табуляции.
$`
- это строка, предшествующая тому, что было сопоставлено с последним сопоставлением с шаблоном - это позволяет узнать, как долго был предыдущий текст, чтобы вы могли правильно выровнять элементы по столбцам.
Например, если запустить это для строки "Something\t\t\tsomething else"
, $&
равно "\t\t\t"
, а $`
равно "Something"
. length($&)
равно 3, поэтому требуется не более 24 пробелов, но length($`)%8
равно 1, поэтому для выравнивания по столбцам каждые восемь добавляется 23 пробела.