<?xml version="1.0" encoding="utf8"?>
<!DOCTYPE html
	PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
	 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<HTML>
<HEAD>
   <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=uft8">
   <META NAME="DATE" CONTENT="11/2/2003">
   <META NAME="Author" CONTENT="J. J. Merelo">
   <META NAME="Description" CONTENT="Tutorial de PERL en castellano, con ejemplos y ejercicios">
   <META NAME="Keywords" CONTENT="curso de perl, tutorial de perl, manual de perl, programacion"> 
   <TITLE>Tutorial de Perl:  Pero ya puestos...  </TITLE>
<script language="JavaScript">
var contador = 1;
var contadores= new Array;
function multicontador(  numero ) {
      if ( ! contadores[ numero ]  )
          contadores[ numero ] = 1;
      else
          contadores[numero ]++;
      document.write( contadores[numero] );
};

</script>
<link rel ='stylesheet' type = "text/css" href = "perl.css">
</HEAD>
<BODY TEXT="#000000" BGCOLOR="#ffffff" LINK="#0000FF" VLINK="#551A8B" ALINK="#FF0000">
<TABLE  align=center cellpadding=5 bgcolor='darkseagreen'>
	<tr>

	<td>
			 <!-- Atomz.com Search HTML for Tutorial de PERL en castellano -->
	  <form method="get" action="http://search.atomz.com/search/">
	    <input size=25 name="sp-q"><br /><input type=submit value="Busca en el tutorial">
	    <input type=hidden name="sp-a" value="0002147b-sp00000001">
	  </form>
	</td>

	<td align='center'>
			<h1><a href='indice.html'>Tutorial de <strong>PERL</strong> en castellano </a>: Pero ya puestos...</h1>
	</td>

    <td align='right' valign='top'><a href='tutoperl16.html'> Preguntas frecuentemente preguntadas</a><br><a href='tutoperl17.html'> Bibliograf&iacute;a.</a><br><a href='tutoperl18.html'> Recursos Internet</a><br><a href='tutoperl10.html'> Regularizando la situaci&oacute;n</a><br><a href='tutoperl8.html'> Purgando los pecados.</a><br></td>
	</tr>
</table>

<h3>La orden <code>grep</code></h3>


<P>... se puede hacer de una forma m&aacute;s simple. Nuestro pol&iacute;tico se dio cuenta
r&aacute;pidamente que muchas de esas operaciones se pueden hacer en una sola l&iacute;nea,
y as&iacute; ahorra uno espacio en disco duro, que va caro. Por
ejemplo, el programa 
<code>congrep.pl</code></p><pre><code>
@zipi=&lt;&gt;;
grep( ( split(/ /) &amp;&amp; print "Total parcial ",$total+=$_[$#_-2],"\n"),@zipi);</code></Pre>

<P>; en un par de l&iacute;neas. En general, la funci&oacute;n
<code>grep</code>, que recuerda al <code>grep</code> del 
sistema operativo, pero no tiene mucho que ver con ella, sirve para procesar
matrices enteras. Como primer argumente se le pasa una expresi&oacute;n, pero ya se ve
que en perl el concepto de expresi&oacute;n es un poco amplio; de hecho, el programa
anterior es uno de los ejemplos de programa cr&iacute;ptico que los
perl-hackers tanto conocemos y amamos.</P>

<P>	Pero en fin, vamos a ello: la expresi&oacute;n, para empezar, est&aacute; entre par&eacute;ntesis;
luego, consiste en dos partes separadas por <code>&amp;&amp;</code>; este operador nos garantiza el
orden de evaluaci&oacute;n, y adem&aacute;s no eval&uacute;a la parte de la derecha si no ha podido
ejecutarse la de la izquierda; en resumen, la expresi&oacute;n hace lo mismo que las dos
l&iacute;neas del interior del bucle anterior... Y, ¿qu&eacute; hace
<code>grep</code>, entonces? Simplemente, 
le asigna a <code>$_</code> cada uno de los componentes de la matriz que se le pasa como
segundo argumento, y crea otra lista que tiene como componentes aquellos para
los cuales la expresi&oacute;n es verdadera. Por ejemplo, podemos crear a partir del
anterior otro programa que imprima s&oacute;lo los que hayan pagado por encima de una
pasta determinada, y adem&aacute;s los meta en una matriz (<FONT
FACE="Courier New Normal">mailing.pl</code>):<pre>
@zipi=&lt;&gt;;
@ricos=grep( split(/ /) &amp;&amp; ($_[$#_-2] &gt; 200000) , @zipi );
print @ricos;
</Pre>

<table class=ejercicio width=100% cellpadding=2 cellspacing=0 border=0>
    <tr><td bgcolor=green><table bgcolor=white cellspacing=0
cellpadding = 6 width=100%><tr>
<td><ol>
<li>Hacer un programa que extraiga de un array todos aquellos
elementos que aparezcan más de una vez, y los coloque en otro
array. Hacerlo usando <code>grep</code>.
</li></ol>
</td></tr></table></td></tr><caption><font
face="arial,helvetica">Ejercicios
<script>multicontador(3);</script></font></caption></table> 



<TABLE  align=center cellpadding=5 bgcolor='darkseagreen'><tr><td>[<a href='tutoperl16.html'> Preguntas frecuentemente preguntadas</a>] [<a href='tutoperl17.html'> Bibliograf&iacute;a.</a>] [<a href='tutoperl18.html'> Recursos Internet</a>] [<a href='tutoperl10.html'> Regularizando la situaci&oacute;n</a>] [<a href='tutoperl8.html'> Purgando los pecados.</a>] </td></tr></table>

</BODY>
</HTML>
