後者はハイフンでなくてマイナス記号でんがな。

[を] UTF-8 の全角ハイフンが Perl の正規表現にマッチしなくて悩んだ
で、元のテキストファイルの全角ハイフンを「od -t x1」 で見てみると「ef bc 8d」と「e2 88 92」の2種類が混じっていました。 前者は「\p{Hyphen}」にマッチするのですが後者はダメ。 まあ原因は分かったので、前処理でバイナリ置換して解決しました。

で、紛らわしそうなのを名前のHYPHENとMINUS SIGNでgrepするとこんな感じになる。

egrep '(HYPHEN|MINUS SIGN)' /usr/local/lib/perl5/5.10.0/unicore/Name.pl
-002DHYPHEN-MINUS
­00ADSOFT HYPHEN
±00B1PLUS-MINUS SIGN
˗02D7MODIFIER LETTER MINUS SIGN
̠0320COMBINING MINUS SIGN BELOW
֊058AARMENIAN HYPHEN
1806MONGOLIAN TODO SOFT HYPHEN
2010HYPHEN
2011NON-BREAKING HYPHEN
2027HYPHENATION POINT
2043HYPHEN BULLET
2052COMMERCIAL MINUS SIGN
2212MINUS SIGN
2A29MINUS SIGN WITH COMMA ABOVE
2A2AMINUS SIGN WITH DOT BELOW
2A2BMINUS SIGN WITH FALLING DOTS
2A2CMINUS SIGN WITH RISING DOTS
2A3AMINUS SIGN IN TRIANGLE
2A41UNION WITH MINUS SIGN
2E17DOUBLE OBLIQUE HYPHEN
30A0KATAKANA-HIRAGANA DOUBLE HYPHEN
FE63SMALL HYPHEN-MINUS
FF0DFULLWIDTH HYPHEN-MINUS
󠀭E002DTAG HYPHEN-MINUS

で、本当に紛らわしいのをまとめるとこんな感じになるだろうか。

perl -CIO 's/[\x{02D7}\x{2010}-\x{2012}\x{FE63}\x{FF0D}]/-/g'

とにかくUnicodeには記号が多い。Glyphを見ただけでは区別がつかないものも多い。こういう時にはPerlのunicoreディレクトリ以下のファイルは結構役に立つ。

Dan the Man with too Many Characters to Disambiguate