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

t40tm48m  于 2022-11-15  发布在  Perl
关注(0)|答案(1)|浏览(145)

我需要将$foo= 101100转换为10aabb
当前正在使用它,但它将替换整个字符串
$foo =~ tr/10/ab/;

trnvg8h3

trnvg8h31#

下面是Perl的一些妙招:

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

输出量:

10aabb

基本上,我们从第二个字符偏移量开始,取字符串的子字符串,并将其音译。
documentation for 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

相关问题