В Perl можно писать многострочные строковые литералы, используя обычные кавычки или инструкции здесь-doc, но поскольку отступы кода считаются содержимым самой строки, это либо разрушает форматирование окружающего кода, либо требует перед тем, как использовать дополнительную строку. На данный момент я использую следующую подпрограмму для Unindent строкового литерала:Необязательные многострочные строковые литералы
sub unindent {
local $_ = shift;
$_ =~ s/^\s*$//mg;
$_ =~ s/^(\s*>>>\s)//mg;
return $_;
}
print unindent "
>>> #pragma once
>>> #include <...>
>>> ";
Но не изобретать колесо, я хотел бы спросить, есть ли уже что-то для этой цели встроенной в Perl или на CPAN?
Не рекомендуется использовать глобальную переменную '' $ _' внутри подпрограммы, когда ее так просто создать лексическую переменную, например. 'my $ str = shift'. – TLP
или 'local $ _ = shift'. – tobyink
@TLP, @tobyink, ops, я забыл, что '$ _' не станет автоматически локальным. Спасибо за ваши исправления! – firegurafiku