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 ...