我在网上看到了以下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刚被删除.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。