このような何かがそれを行うかもしれません-このような文字列を変換する場合、重複を導入する可能性があることに注意してください。
my $input ="Parks and Recreation - S05E01 - Ms. Knope Goes to Washington";
$input =~ s/ - /_/g; # Replace all " - " with "_"
$input =~ s/[^A-Za-z0-9]/_/g; # Replace all non-alphanumericals with "_"
print $input;
これは以下を出力します:
Parks_and_Recreation_S05E01_Ms__Knope_Goes_to_Washington
編集
以下のÉricsのコメントは非常に関連性があります。これは、置換を行う前にアクセント付きの文字をアクセントなしの文字に置き換える、少し優れたアプローチです。
use utf8;
use Unicode::Normalize;
my $input="La femme d'à côté";
my $result = NFD($input); # Unicode normalization Form D (NFD), canonical decomposition.
$result !~ s/[^[:ascii:]]//g; # Remove all non-ascii.
$result =~ s/ - /_/g; # Replace all " - " with "_"
$result =~ s/[^A-Za-z0-9]/_/g; # Replace all non-alphanumericals with _
print $result;
このバリアントは以下を出力します:
La_femme_d_a_cote