我需要转换$foo= 101100
至10aabb
目前正在使用,但它取代了整个字符串
$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