我在网上看到了以下Perl示例.
#!/usr/bin/perl $string = 'the cat sat on the mat.'; $string =~ tr/a-z/b/d; print "$string\n";
结果:
b b b.
有人可以解释一下吗?
解决方法
/ d表示删除.
这样做是很不寻常的,因为它令人困惑.
tr/a-z//d
会删除所有’a-z’字符.
tr/a-z/b/
将所有a-z字符音译为b.
这里发生的事情是 – 因为你的音译没有在每一侧映射相同数量的字符 – 任何不映射的东西都会被删除.
所以你真正做的是:
tr/b-z//d; tr/a/b/;
为了显示:
use strict; use warnings; my $string = 'the cat sat on the mat.'; $string =~ tr/the/xyz/d; print "$string\n";
警告:
Useless use of /d modifier in transliteration operator at line 5.
和打印:
xyz cax sax on xyz max.
如果您将其更改为:
#!/usr/bin/perl use strict; use warnings; my $string = 'the cat sat on the mat.'; $string =~ tr/the/xy/d; print "$string\n";
你改为:
xy cax sax on xy max.
因此:t – > x和h – >年. e刚被删除.