我试图找到一种方法用管道(||)替换空格和双引号,同时保持双引号内的空格不变.
例如,它会将"word"字词"word"改为"word || word word || word",将"word word word"改为"word || word || word".
现在我有这个工作:
[%- MACRO typestrip(value) PERL -%]
my $htmlVal = $stash->get('value');
$htmlVal =~ s/"/||/g;
print $htmlVal
[%- END -%]
Run Code Online (Sandbox Code Playgroud)
哪个处理用管道替换双引号就好了.
我不知道这应该是多么简单或复杂,或者甚至可以做到,因为我没有编程的实际背景,虽然我曾经使用过一些Perl,但它以前从来没有这样,所以我道歉如果我我没有很好地解释这一点.
我认为使用核心模块Text::ParseWords拆分非引用的空格可能更容易,然后用管道重新加入"单词".
#!/usr/bin/env perl
use warnings;
use strict;
use Text::ParseWords;
while (my $line = <DATA>) {
print space2pipes($line);
print "\n";
}
sub space2pipes {
my $line = shift;
chomp $line;
my @words = parse_line( qr/\s+/, 0, $line );
return join '||', @words;
}
__DATA__
word "word word" word
word word word
Run Code Online (Sandbox Code Playgroud)
把它放到你的模板引擎中留给读者练习:-)