需要帮助来理解带有 /d 的 perl tr 命令
Need help in understanding perl tr command with /d
我在网上看到了以下 Perl 示例。
#!/usr/bin/perl
$string = 'the cat sat on the mat.';
$string =~ tr/a-z/b/d;
print "$string\n";
结果:
b b b.
有人可以解释一下吗?
/d
表示delete
。
像这样 tr
是很不寻常的,因为它令人困惑。
tr/a-z//d
将删除所有 'a-z' 个字符。
tr/a-z/b/
会将所有 a-z
个字符音译为 b
。
这里发生的事情是——因为你的音译没有在每一侧映射相同数量的字符——任何不映射的都被删除。
所以你有效地做的是:
tr/b-z//d;
tr/a/b/;
例如将所有 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
-> y
。 e
刚被删除。
d
用于删除找到但未被替换的字符。
要删除不在匹配列表中的字符,可以通过将 d
附加到 tr
运算符的末尾来完成。
#!/usr/bin/perl
my $string = 'my name is serenesat';
$string =~ tr/a-z/bcd/d;
print "$string\n";
打印:
b b
删除字符串中不匹配的字符,只替换匹配的字符(a
替换为b
)。
我在网上看到了以下 Perl 示例。
#!/usr/bin/perl
$string = 'the cat sat on the mat.';
$string =~ tr/a-z/b/d;
print "$string\n";
结果:
b b b.
有人可以解释一下吗?
/d
表示delete
。
像这样 tr
是很不寻常的,因为它令人困惑。
tr/a-z//d
将删除所有 'a-z' 个字符。
tr/a-z/b/
会将所有 a-z
个字符音译为 b
。
这里发生的事情是——因为你的音译没有在每一侧映射相同数量的字符——任何不映射的都被删除。
所以你有效地做的是:
tr/b-z//d;
tr/a/b/;
例如将所有 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
-> y
。 e
刚被删除。
d
用于删除找到但未被替换的字符。
要删除不在匹配列表中的字符,可以通过将 d
附加到 tr
运算符的末尾来完成。
#!/usr/bin/perl
my $string = 'my name is serenesat';
$string =~ tr/a-z/bcd/d;
print "$string\n";
打印:
b b
删除字符串中不匹配的字符,只替换匹配的字符(a
替换为b
)。