tr/// 用オプション /s

「/s」オプションを付けると、tr/// によって1文字ずつスキャンし変換した結果、その文字が連続で続いていたら「1文字」にします。これはちょっと言葉では説明しづらいですね。
例えば、さきほど使ったコードを少し変えてみます。

use strict;
 
my $text1 = "There's more than one way to do it.";
my $text2 = $text1;
print "$text1\n";
 
$text1 =~ tr/a-zA-Z'/*/;
print "$text1\n";
 
$text2 =~ tr/a-zA-Z'/*/s;
print "$text2\n";

全く同じ文字列に対して、英文字とアポストロフィ(')を「*」に置換します。ただし、前者には「/s」をつけずに、後者には「/s」オプションを付けてみました。違いが出るはずです。
実行結果は以下の通りです。

 There's more than one way to do it.
 ******* **** **** *** *** ** ** **.
 * * * * * * * *.

前者の変換では、スペリングの文字数だけ「*」が表示されていますが、後者では、英単語の数だけ「*」が表示されます。「*******」のように並んだアスタリスクが「*」と1つにまとめられているわけですね。(^_^)
ちなみに「s」は「squash」(押しつぶす)の略だそうです。複数の文字を1つに押しつぶすイメージでしょうか。