<?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:  M&aacute;s dif&iacute;cil todav&iacute;a  </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>: M&aacute;s dif&iacute;cil todav&iacute;a</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='tutoperl3.html'>Mi primer programa en Perl</a><br><a href='tutoperl18.html'> Recursos Internet</a><br><a href='tutoperl5.html'> Dando vueltas sobre lo mismo</a><br></td>
	</tr>
</table>

<h3>Variables, interpolaci&oacute;n y cadenas</h3>


<P>Ya que hemos hecho nuestro primer programa, vamos a por el segundo.
Supongamos que somos un pol&iacute;tico corrupto cualquiera, y que, dado
el alto n&uacute;mero de transacciones diarias por las cuales cobramos
comisiones ilegales, decidimos escribir un programa en <strong>PERL</strong> que nos resuelva
la dif&iacute;cil papeleta de calcularlas sobre la marcha. Ni cortos ni
perezosos, nos puede servir <a href='comile.pl.html'>lo siguiente (comile.pl)</a>:</p>

<table class=listado align=center cellspacing=0 cellpadding=2 border=0><tr><td
bgcolor=black><table  width=100%  cellpadding=4 cellspacing=0 border=0><tr><td bgcolor=white>
<pre><font size='+2' color='red'>print</font> "Valor del inmueble? "; 
<font color=green>$valor</font> = &lt;STDIN&gt;; 
<font color=green>$comision</font> = <font color=green>$valor</font> * 0.25; 
<font color=red>print</font> "Comision = <font color=green>$comision</font>\n"; 
</font></pre>
</td></tr></table></td></tr><caption><font face="arial,helvetica">Listado <script>multicontador(1);</script>: Programa comile.pl</font></caption></table>


<P>que da el resultado siguiente<pre><code>
C:\PROGS\PERL>perl comile.pl
Valor del inmueble 1000000 <FONT FACE="Times">[Escrito por el usuario]</FONT>
Comision = 250000</code></pre>

<p>A partir de este momento, indicaremos en <font
color=red><code>rojo</code></font> las palabras clave de
<strong>PERL</strong>, en  <font
color=green><code>verde</code></font> las variables de
<strong>PERL</strong> y en <font
color=blue><code>azul</code></font> las &oacute;rdenes de control.

<P>En este ejemplo hay algunos elementos m&aacute;s de <strong>PERL</strong>. Como se ve,
las variables se indican con un s&iacute;mbolo de $ (sumamente indicado
para el ejemplo); en este caso se trata de variables escalares, que contienen
un valor num&eacute;rico o una cadena; a  <strong>PERL</strong> le da exactamente igual que
se trate de uno o de otro, la transformaci&oacute;n se hace autom&aacute;ticamente.
Y no hace falta ninguna declaraci&oacute;n de variables; cada variable
se declara en el momento que se usa, y si no se ha usado anteriormente,
aparece autom&aacute;ticamente con el valor 0 o &acute;&acute; (cadena
nula). Las variables en <strong>PERL</strong> tienen todas visibilidad
global, si no se dice lo contrario.</p>

<P>El programa pide adem&aacute;s, la intervenci&oacute;n del usuario,
leyendo en una variable lo que &eacute;ste teclea. Para ello se utiliza
un <I>filehandle</I> o puntero a un fichero abierto (el equivalente a
un <code>FILE*</code> en C), que est&aacute; disponible
en todos los programas, la entrada est&aacute;ndar o
<code>stdin</code> (estandard input); de la misma manera,
tambi&eacute;n existe la salida est&aacute;ndar o <code>stdout</code>, es decir, que
es lo mismo <code>print STDOUT</code> que <code>print</code>).
El nombre de esta variable no est&aacute; precedido por ning&uacute;n s&iacute;mbolo
de $ para indicar que se trata de un <I>filehandle</I>, o una variable
que representa un fichero. Los <I>angle brackets</I>, o par&eacute;ntesis
angulares <code><></code>, indican que se lee del fichero una l&iacute;nea completa, hasta
que el que teclea pulsa un retorno de carro.</p>

<P>Por &uacute;ltimo, se est&aacute; utilizando la operaci&oacute;n denominada
<I>interpolaci&oacute;n de variables.</I> Una variable incluida dentro
de una cadena entre comillas dobles ser&aacute; sustituida por su valor
(no en el caso de tratarse de comillas simples).
</p>


<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='tutoperl3.html'>Mi primer programa en Perl</a>] [<a href='tutoperl18.html'> Recursos Internet</a>] [<a href='tutoperl5.html'> Dando vueltas sobre lo mismo</a>] </td></tr></table>

</BODY>
</HTML>
