2010-12-04 6 views
1

J'ai une liste de commande pour analyser ...perl problème regexp 2

comme:

> ls -lart 
> ls 
> ls /etc/passwd 
> ping 
> ping 127.0.0.1 
> PING 
> LS 

Je dois compter le nombre de fois ls et ping a été exécuté, je dois pas compter majuscule comme LS et PING, mais je dois compter lancement de la commande avec l'option comme "ls -lart"

Comment vérifier si une ligne contient le mot exact ls ou ping ou quoi?

Avec une expression régulière !!!

Merci,

+4

Avez-vous peut-être pensé à faire vos devoirs de _own_? – paxdiablo

+1

Je suis d'accord avec paxdiablo, ce n'est vraiment pas dur Perl ici. Lisez 'perldoc perlintro' et' perldoc perlretut' et si vous avez encore des problèmes, demandez. –

+0

Merci! ce n'est pas un devoir, puisque je suis un peu vieux pour faire mes devoirs. J'étudie perl pendant mon temps libre après le travail, et parfois je suis coincé sur le problème stupide parce que je manque un mot clé ou un processus. J'ai trouvé cette façon d'apprendre par la question et l'explication plus efficace que de lire un script entier. Donc, si vous ne voulez pas m'aider, je vous invite à ne pas écrire de réponse ou de commenter ma question. – Kerby82

Répondre

1
my $count = 0; 

while (<STDIN>) { 
    m/^\s*(ls|ping).*$/; 
    $count++ if $1; 
} 
+0

Salut, j'ai trouvé ceci: m/^ \ b (ls | ping) \ b/est la variable de limite – Kerby82

+0

Vous avez raison, en utilisant '\ b' pour délimiter la commande est plus approprié dans ce cas. –