2010-03-08 5 views
1

Est-il possible d'une manière ou d'une autre, dans un script Perl, d'exécuter efficacement grep par rapport à une variable Perl? Une fonction Perl équivalente serait également acceptable, je veux juste garder la solution aussi simple que possible.Peut-on utiliser grep sur une variable Perl?

Par exemple:

#!/usr/bin/perl 
#!/bin/grep 

$var="foobar"; 

$newvar="system('grep -o "foo" $var'); 

sprintf $newvar; 

Là où j'attends sprintf $newvar à la sortie foo.

Souhaitez-vous également des commentaires sur les meilleures pratiques ici. Je ne suis pas extrêmement familier avec Perl.

+1

Je ne peux pas recommander le livre Learning Perl assez. Il est bien écrit et fait un excellent travail pour expliquer les bases. Jetez un oeil ici: http://books.google.com/books?id=4pINCzVk9NMC&lpg=PP1&dq=Learning%20Perl&client=firefox-a&pg=PP1#v=onepage&q=&f=false – daotoad

Répondre

5

vous pouvez simplement utiliser la correspondance regex en Perl. Pas besoin d'appeler la commande "grep" externe.

$var =~ /foo/; 

s'il vous plaît lire la documentation perlrequick pour l'introduction sur la façon de rechercher des modèles dans les variables. Aussi intéressant est le propre grep de Perl.

$var="foobar"; 
if ($var =~ /foo/){ 
    print "found foo\n"; 
} 
+0

Comme dans l'exemple, le texte que je vouloir "grep" est déjà contenu dans une variable. Votre suggestion deviendrait-elle '$ newvar = $ var = ~/foo /;' ou est-ce que je me méprends? En outre, aucune raison particulière que je voulais utiliser grep autre que celui que je connais déjà. – Structure

+0

'$ newvar' contiendra la valeur de retour de la recherche si' foo' est trouvé. – ghostdog74

+0

Fantastique, merci. Je sais assez pour être dangereux, mais pas assez pour savoir ce que je cherche. :) Je peux accomplir ce que je cherche maintenant. – Structure

Questions connexes