Perl seria um exagero aqui.
find . -maxdepth 1 -mindepth 1 | wc -l
(use melhor grep -c / em vez de wc -l no caso de alguns nomes de arquivos possuírem caracteres de nova linha).
Ou com o GNU ls :
ls -A | wc -l
com zsh :
f=(*(D))
echo $#f
Para remover um:
... | tail -n +2 | wc -l
Ou:
n=$(... | wc -l); echo "$(($n - 1))"
Com o perl, você pode usar o sinalizador -n ou -p :
... | perl -lpe '--$_'
Acima, a expressão --$_ é avaliada e o conteúdo da variável $_ é impresso para cada linha de entrada.