perl - 在 Perl 替换表达式中连接字符串

标签 perl

我有一个具有重复模式的字符串,我想用另一个字符串替换每次出现的此类模式。替换字符串是通过连接一组其他字符串而形成的。示例如下。我首先尝试使用 . 运算符进行连接,如图所示。

但输出包含点本身,因此 Perl 不会将其视为运算符,而是文字 .

#!/usr/bin/perl
use warnings;
use strict;

my $start = 'not-so-';
my $end = '-but-a-little-bad';
my $string = 'I am a good boy. Infact I am a very good boy';
print "Before: $string\n";
>>>> $string =~ s/(good)/$start.$1.$end/g;
print "Later : $string\n";

所以我删除了 .,我的语句变成了 $string =~ s/(good)/$start$1$end/g;,输出符合预期。但是,我觉得这样的声明可能会导致以后的维护问题。

我的问题:除了这个之外,还有更好的连接字符串的方法吗?

最佳答案

你的符号

$string =~ s/(good)/$start$1$end/g;

很好。如果您愿意,也可以写

$string =~ s/(good)/$start . $1 . $end/ge;

但它是完全等价的。

关于perl - 在 Perl 替换表达式中连接字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13075687/

相关文章:

perl - 如何计算Perl中两个日期之间的天数?

perl - 在 Perl 中如何判断变量是否具有数值?

perl + 从 perl 脚本返回代码 1

java - 无法看到从 Java 类执行的 Perl 输出

Perl AnyEvent::HTTP 请求使用代理失败

Perl 内置函数作为子例程引用

perl - 我应该清理我的 Perl CGI HTML 表单中的文件上传输入字段吗?

perl - 在尝试使用一个图像创建网格并将其应用于另一个图像时,我需要帮助补偿图像的移动

perl - 我可以让 Perl 不删除堆栈帧吗?

perl - 如何从 Perl XS 模块调用不同 C 源文件中的函数?