perl - 取消缩进多行字符串文字

标签 perl cpan multiline code-formatting literals

在 Perl 中,可以使用普通引号或here-doc语句编写多行字符串文字,但是由于代码缩进被计为字符串本身的内容,这要么会破坏周围代码的格式,要么需要我们另外取消缩进使用前的字符串。此时,我使用以下子例程来取消缩进字符串文字:

sub unindent {
    local $_ = shift;
    $_ =~ s/^\s*$//mg;
    $_ =~ s/^(\s*>>>\s)//mg;
    return $_;
}

print unindent "
    >>> #pragma once
    >>> #include <...>
    >>> ";

但并不是要重新发明轮子,我想问一下 Perl 或 CPAN 中是否已经内置了用于此目的的东西?

最佳答案

经过更多谷歌搜索后,我发现了一些具有类似功能的软件包并部分解决了问题:

第一个选项需要安装大量依赖项(用于简单的unindent功能),其余三个仅适用于此处文档。这些包似乎都不支持额外的标记(问题中的 >>> ),在我看来,这比普通缩进更安全(由于制表符空间混合问题)。

关于perl - 取消缩进多行字符串文字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21873017/

相关文章:

linux - perl grep 和 cli grep 之间的不一致

perl - 我如何安装 Perl 的 Lingua::Lid?

perl - 分发 Perl 应用程序

python - 在 Python 命令行参数中拆分长参数

wpf - WPF 文本框的多行

perl - 为什么SQLite提示我准备好的语句的语法?

perl - 从 perl 分发文件获取模块依赖项?

perl - Perl使用系统提取 tar

perl - 如何使用 ActiveState Perl 在 Windows 上安装 Spreadsheet::WriteExcel?

c# - 多行问题 WPF TextBox