【发布时间】:2014-02-19 06:43:14
【问题描述】:
在 Perl 中,可以使用普通引号或 here-doc 语句编写多行字符串文字,但由于代码缩进被视为字符串本身的内容,这要么破坏了周围代码的格式,要么需要我们额外取消缩进使用前的字符串。此时,我使用以下子例程来取消缩进字符串文字:
sub unindent {
local $_ = shift;
$_ =~ s/^\s*$//mg;
$_ =~ s/^(\s*>>>\s)//mg;
return $_;
}
print unindent "
>>> #pragma once
>>> #include <...>
>>> ";
但不是重新发明轮子,我想问一下 Perl 或 CPAN 中是否已经有为此目的内置的东西?
【问题讨论】:
-
在子例程中使用全局默认变量
$_不是一个好主意,因为它很容易创建一个词法变量,例如my $str = shift. -
或
local $_ = shift。 -
@TLP, @tobyink, ops,我忘了
$_不会自动变成本地的。感谢您的指正!
标签: perl cpan multiline code-formatting literals