在使用/ d理解perl tr命令方面需要帮助

我在网上看到了以下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/;

例如.音译到bs然后删除任何其他内容(空格和点除外).

为了显示

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刚被删除.

相关文章

1. 如何去重 #!/usr/bin/perl use strict; my %hash; while(...
最近写了一个perl脚本,实现的功能是将表格中其中两列的数据...
表的数据字典格式如下:如果手动写MySQL建表语句,确认麻烦,...
巡检类工作经常会出具日报,最近在原有日报的基础上又新增了...
在实际生产环境中,常常需要从后台日志中截取报文,报文的形...
最近写的一个perl程序,通过关键词匹配统计其出现的频率,让...