不,没有内置,但我们很多人都写自己的.
也适用于ql()行列表的两种需求.我用deQ了一个q()版本,deQQ一个qq版本是那些用Perl的"闪现"操作符的:
sub dequeue($$) {
my($leader, $body) = @_;
$body =~ s/^\s*\Q$leader\E ?//gm;
return $body;
}
sub deQ($) {
my $text = $_[0];
return dequeue q<|Q|>, $text;
}
sub deQQ($) {
my $text = $_[0];
return dequeue qq<|QQ|>, $text;
}
Run Code Online (Sandbox Code Playgroud)
这让我可以使用这样的东西:
sub compile($) {
my $CODE = shift();
my $wrap = deQQ<<"END_OF_COMPILATION";
|QQ|
|QQ| use warnings qw[FATAL all];
|QQ| no warnings "utf8";
|QQ|
|QQ| sub {
|QQ| my \$_ = shift;
|QQ| $CODE;
|QQ| return \$_;
|QQ| }
|QQ|
END_OF_COMPILATION
return eval $wrap;
}
Run Code Online (Sandbox Code Playgroud)
要么
my $sorter = new Unicode::Collate::
upper_before_lower => 1,
preprocess => \&reduce_for_sorting,
entry => deQ<<'END_OF_OVERRIDE'
|Q|
|Q| 005B 006E 002E ; [.0200.0020.0002.0391] # [n.
|Q| 005B ; [.0220.0020.0002.0392] # [
|Q| 005D ; [.0225.0020.0002.0395] # ]
|Q|
END_OF_OVERRIDE
Run Code Online (Sandbox Code Playgroud)
看看它是如何工作的?
你可以qw()在"常规"列表中撒上.我有时写这样的代码:
my @command = (
qw(cat arg1 arg2),
$arg3,
qw(arg4 arg5 arg6),
"$arg7 $arg8",
# ...
);
Run Code Online (Sandbox Code Playgroud)