Perl tr替换但忽略前2个字符



我需要转换$foo= 10110010aabb

目前正在使用,但它取代了整个字符串

$foo =~ tr/10/ab/;

这里有一些Perl魔术:

my $foo = 101100;
substr($foo, 2) =~ tr/10/ab/;
print $foo;

输出:

10aabb

基本上,我们从第二个字符偏移量开始,取字符串的子字符串,并将其音译

在substr的文档中,您可以阅读以下内容:

您可以使用substr函数作为左值,在这种情况下EXPR本身必须是左值。

当用作左值时,指定完全在字符串外部的子字符串会引发异常。下面是一个显示边界情况行为的示例:

my $name = 'fred';
substr($name, 4) = 'dy';         # $name is now 'freddy'
my $null = substr $name, 6, 2;   # returns "" (no warning)
my $oops = substr $name, 7;      # returns undef, with warning
substr($name, 7) = 'gap';        # raises an exception

最新更新