Se eu entendi corretamente, seu problema é que os nomes dos arquivos estão sendo interpretados como metacaracteres de expressão regular. Nesse caso, você deseja que a -F
mude para grep
(que é especificado por POSIX). Ele diz grep
para interpretar seu padrão como uma string fixa em vez de uma regex:
@ number = ('grep -Fc -- "$name" "$paths"')
Observe também a adição de --
para especificar "fim de opções" para grep
para contornar nomes de arquivos que começam com -
. Observe também que a opção -E
, que ativa expressões regulares estendidas, não é mais necessária.