• Publicidad

Diferencia entre igualdad y asignación

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Diferencia entre igualdad y asignación

Notapor Guille » 2006-06-06 14:21 @640

Hola como andan ?

Queria saber concretamente cual es la diferencia entre:

$variable = nombre

$varible -> nombre

:?

Bueno eso era todo saludos!!!

Guille
Avatar de Usuario
Guille
Perlero nuevo
Perlero nuevo
 
Mensajes: 33
Registrado: 2006-05-31 13:30 @604
Ubicación: Argentina

Publicidad

Notapor kidd » 2006-06-06 15:54 @704

Hola:

Muy bien, es un error muy común, principalmente cuando te estás acostumbrando a usar Perl, el usar la asignación cuando querias la igualdad.

La asignación se hace con un signo de igual:
Código: Seleccionar todo
my $nombre = "Uriel";


En cambio, si queremos buscar la igualdad se debe de hacer con dos signos de igual:
Código: Seleccionar todo
if($int == 4){
    print "Son cuatro";
}


Ahora, si quieres comparar dos cadenas se debe de usar el eq:
Código: Seleccionar todo
if($nombre eq "Uriel"){
    print "Soy yo";
}




Saludos
Uriel Lizama Perl programmer fundador de Perl en Español
Perl Programming Language
Avatar de Usuario
kidd
Creador de Perl en Español
Creador de Perl en Español
 
Mensajes: 1166
Registrado: 2003-10-15 16:52 @744
Ubicación: México

Notapor explorer » 2006-06-06 17:34 @774

En el primer caso es una asignación. Estamos guardando nombre en la $variable. Por ejemplo:
Código: Seleccionar todo
$variable = "Guille";
print $variable; # por la pantalla sale la palabra Guille

La segunda forma es un poco más dificil de explicar.

El operador flecha "-> " es un operador de desreferencia infija, como es en C y en C++. Si el lado derecho es [...] , {...} , o un (...), entonces el lado izquierdo debe ser una referencia real o simbólica a un array, un hash o una subrutina, respectivamente. (O, técnicamente hablando, una posición capaz de guardar una referencia, si es una referencia a un array o hash que es usada en una asignación.) Ver perlreftut y perlref.

Si no es eso, el lado derecho es el nombre de un método o una variable escalar normal, conteniendo el nombre del método o la referencia a una subrutina, y el lado izquierdo debe ser un objeto (una referencia bendecida) o el nombre de una clase (es decir, el nombre de un módulo). Ver perlobj.

En el ejemplo que pones, $variable->nombre, estás ejecutando el método nombre del objeto almacenado en $variable.

Código: Seleccionar todo
    1 #!/usr/bin/perl -l
    2 package Persona;
    3 use strict;
    4
    5 sub new {
    6     my $clase = shift;
    7     my $self  = {};
    8     $self->{NOMBRE}   = shift;
    9     bless($self,$clase);
   10     return $self;
   11 }
   12
   13 sub nombre {
   14     my $self = shift;
   15     print $self->{NOMBRE};
   16 }
   17
   18 package main;
   19 my $variable = Persona->new("Guille");
   20
   21 $variable->nombre;   # también sale Guille...
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14482
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados