ok. A quel punto farei così:
prima cosa se il comando è seguito da un parametro devi trasformare

${$mom}= split(/$variabile\n/,$var)-1;

in

${$mom}= split(/$variabile /,$var)-1;

poichè \n viene conteggiato solo quando vai a capo.


Per avere il conteggio dei comandi legati ai parametri invece secondo me, ti conviene usare una cosa di questo tipo:

open (TXT,"file.txt");
while (<TXT>)
{
# creo un array momentaneo utilizzando degli elementi divisi da uno spazio
# es. la riga è -> 10 ssh 192.168.1.5 -> l'array sarà @mom=(10,'ssh','192...')
@mom=split(/ /,$_);

#definisco le variabili che contano i comandi
$comando_unico=$mom[1];
$comando_con_parametro="$mom[1]_$mom[2]";

#incremento le variabili
${$comando_unico}++;
${$comando_con_parametro}++;

#aggiungo il nome della variabile in un array solo se è la prima volta che la leggo
if (${$comando_unico}==1) #le volte successive è > di 1
{push (@elenco,$comando_unico)}
if (${$comando_con_parametro}==1)
{push (@elenco,$comando_con_parametro)}

}
close (TXT);

# se i miei conti sono giusti alla fine hai @elenco che è il conteggio delle "comparsate":

foreach $elenco(@elenco)
{
print qq{$elenco è comparsa ${$elenco} volte\n}
}

questo sistema però non ti fa usare le espressioni regolari ...