O hífen tem apenas um significado especial quando não é o primeiro ou o último caractere em uma classe de caracteres entre colchetes.
[a-z]
corresponde a todas as letras minúsculas ASCII de a
a z
. [-a-z]
corresponde a todas as letras minúsculas ASCII de a
para z
e o hífen -
.
Isso está documentado na documentação do Perl :
Dentro de uma lista, o caractere "-" especifica um intervalo de caracteres, para que az represente todos os caracteres entre "a" e "z", inclusive. Se você deseja que "-" ou "]" seja membro de uma classe, coloque-o no início da lista (possivelmente após um "^") ou escape com uma barra invertida. "-" também é considerado literalmente quando está no final da lista, pouco antes do fechamento "]".