Hemos visto que el perl utiliza los operadores matemáticos normales empleados para los números: + para la suma, – para la resta, * para la multiplicación, / para la división.

Además, == se utiliza para la igualdad, y vuelve “verdadero” o “falso” según que los números sean iguales o no. El opuesto es != .

 

Como se puede esperar, < es el símbolo de menor y > el de mayor, <= es el símbolo de menor o igual e => el de mayor o igual.

 

Usar estos símbolos con operadores no matemáticos, producirá, si se llama al script con la opción -w, un warning.

 

Hay también operadores que trabajan en la cadena:

 

.

(sí, realmente el punto) ejecuta la concatenación

 

eq

controla que las cadenas sean iguales

 

ne

es el opuesto de eq

 

3 == 3

es verdad

 

3 == “03”

es verdad

 

“bla” eq “arr”

es falso

 

“bla” ne “arr”

es verdad

 

“bla”.3

es equivalente a “bla”.”3″, que restituye “bla3”

 

“bla eek!”

es lo mismo di $bla.”eek!”

 

Están después los operadores lógicos: && (AND), || (OR), ! (NOT). && y || van entre dos expresiones, mientras ! va al principio de la expresión (ya que la niega)

 

3 == “03” && “bla”ne “arr”

es verdadera

 

Esta expresión funciona porque == y tienen una precedencia más alta respecto a &&, pero la misma expresión habría podido escribirse más claramente como:

 

(3 == 03) && (“bla” ne “arr”)

 

!(“eek” eq $bla)

es lo mismo de (“eek” ni $bla)

 

Una particularidad de los operadores && y || es que pueden utilizarse como atajo para “se ha verificado la condición haz esto”.

 

unlink “dumbfile” || die “Couldn’t remove file\n”;

 

De este modo primero se valora unlink() y, si esto tiene éxito, la condición introducida por || viene ignorada, de otro modo (en caso de fracaso) dicha condición se ejecuta.

El operador =~ es curioso: éste mira si 2 pattern son iguales y los sustituye. La sintaxis es:

 

valor =~ /pattern/;

Controla si las variables son iguales

 

valor !~ /pattern/

Forma corta para !($variable=~/pattern/;). Controla que no sean iguales

 

$variable =~ s/pattern/replacement/;

Busca el pattern en la variable y la sustituye con replacement

 

Si la variable se omite, =~ y !~ actúan sobre $_

En la primera forma, sin la s/ , =~ y !~ no modifican los argumentos, pero realiza un test sólo si se acoplan. En la segunda forma, el pattern “replacement” se sustituye con pattern si se encuentra.

 

Y aún más, algunos modificadores pueden añadirse antes del ; para especificar como los pattern tienen que acoplarse:

 

i – case-insensitive

g – match globale. Controla y restituye también más de un valor

 

Los pattern son expresiones regulares bastante parecidas a las de grep. Esto se explicará inmediatamente.

 

“bla” =~ /bl/;

verdadero porque bla contiene bl

 

“blabla” =~ /bl/;

idem

 

“blabla” =~ /bl/g;

encuentra 2 matches

 

“bla” !~ /c/i;

vero

 

$var = “blabla”;

 

$var =~ s/bl/QQ/;

verdadero, y cambia $var en “QQahbla”

 

$var =~ s/BL/qq/ig;

verdadero, y $var se transforma en “qqahqqah”

 

El operador = asigna el segundo elemento al primero. Hay atajos para usar este operador.

 

$var += $value:

añade $value a $var

 

$var -= $value;

resta $value de $var

 

$var *= $value;

multiplica $var por $value

 

$var /= $value;

divide $var por $value

 

Estas expresiones se utilizan para incrementar el valor de las variables:

 

$counter += $step;

 

$var ++

añade 1 a $var

 

++$var

valora $var+1

 

Todos estos operadores (menos =~) y el matching de los pattern se aplican también en C, de manera casi idéntica

Los Mensajes directos de Twitter Twitter ha empezado a lanzar una nueva opción para facilitar el uso de mensajes directos con el que se superan ciertas limitaciones a la hora de recib...
Apple gana la denuncia sobre el dominio iPhone5.com Hoy se ha confirmado que Apple ha resultado vencedora en el caso de disputa del dominio iPhone5.com. La noticia ha venido directamente de una informac...
Como Tranferir tus fotos desde Flickr a Facebook Los aficionados a la fotografía, en términos generales, suelen almacenar sus fotos en algún álbum online de alguno de los servicios disponibles de man...
Ranking Navegadores Junio 2012 Tras la tendencia marcada durante los últimos meses/años en la que el navegador de Google ha venido creciendo de forma casi consecutiva y las pérdidas...
Firefox 18, mas rápido con nuevo motoro Javascript El equipo de trabajo de Mozilla incluye un nuevo motor javascript en la nueva versión de su navegador web junto a otras novedades interesantes. &nbs...
Adobe Regala Flex, el SDK de Flash Tras la decisión de no continuar con el desarrollo de Flash para dispositivos móviles y apostar por HTML5, Adobe anuncia que hará lo propio con Flex. ...
Facebook vs Yahoo antes enemigos ahora socios La presentación de un demanda de por parte de Yahoo por una supuesta infraccción de patentes relacionadas con la publicidad, controles de privacidad y...
Listado de antivirus vulnerables, sepa cual no debe usar.. Dos investigadores des seguridad de la Universidad de Texas, Suman Jana y Vitaly Shmatikov, han presentado recientemente el informe "Abusing File Proc...
Ranking Navegadores Abril 2013 Firefox encadena cuatro meses seguidos de mejora y consolida su posición en el mercado por delante de Chrome. 24/05/2013 - Como cada mes, la consul...
Intel fabricará chips para móviles Intel, el primer fabricante de semiconductores del mundo, fabricará chips ARM para terceros, por lo que el próximo procesador de smartphones de Appl...