next up previous contents index practicapracticaPP2moodleLHPmoodlepserratacpanmodulospauseperlgoogleetsiiullpcgull
Sig: Variables Mágicas Sup: Escalares Ant: Operadores de Cadena Err: Si hallas una errata ...

Contexos Numérico y de Cadena: Conversiones

Perl convierte automáticamente los valores de su representación numérica a su representación como cadena. Por ejemplo, si una cadena aparece al lado de un operador numérico como '+', Perl convierte la cadena a un número, antes de proceder a la evaluación de la expresión aritmética. Los contextos en los que se espera una cadena se denominan contextos de cadena. Aquellos en los que se esperan números se denominan contextos numéricos.

La función utilizada internamente por Perl para convertir implícitamente números a cadenas es la función de la librería estandard C sprintf. Análogamente, la función para convertir cadenas a números es atof. Los espacios en blanco iniciales se ignoran. La conversión utiliza la parte inicial que parezca un número y el resto se ignora.

$n = 0 + "123"; # contexto numérico $n == 123
$n = 0 + "123xyz";  # contexto numérico $n == 123
$n = 0 + "\n123xyz"; # contexto numérico $n == 123
$n = 0 + "x123xyz"; # no hay número al comienzo $n == 0

El proceso de conversión no reconoce números octales no hexadecimales. Para ello deberá usarse explícitamente el operador oct:

$n = 0 + "x123"; # no hay número al comienzo $n == 0
$n = 0 + oct("x123"); # $n == 291
La llamada oct expresión devuelve el valor decimal de expresion, interpretado como una cadena octal. Si la expresion comienza con 0x, la interpreta como una cadena hexadecimal.

Los operadores de bit son sensibles al contexto. Si es un contexto de cadena, utilizan como unidad el carácter, mientras que si es un contexto numérico, la unidad es el bit. Veamos un ejemplo. Para ello usaremos el depurador de Perl que se activa usando la opción -d:

~/perl/src> perl -de 0
Es necesario facilitarle al depurador un programa. Para evitar la molestia de escribir uno, le indicamos que le pasamos el programa en la línea de comandos. Esto se hace con la opción -e, que debe ir seguida del programa Perl. En el ejemplo que sigue hemos elegido pasarle como programa uno bastante trivial: una expresión que es la constante cero:

~/perl/src> perl -de 0
Loading DB routines from perl5db.pl version 1.19
Editor support available.
Enter h or `h h' for help, or `man perldebug' for more help.
main::(-e:1):   0
DB<1> $a = 123
DB<2> $b = 234
DB<3> $c = $a & $b
DB<4> p $c
106
DB<5> $a = "$a"
DB<6> $b = "$b"
DB<7> $d = $a & $b
DB<8> p $d
020


next up previous contents index practicapracticaPP2moodleLHPmoodlepserratacpanmodulospauseperlgoogleetsiiullpcgull
Sig: Variables Mágicas Sup: Escalares Ant: Operadores de Cadena Err: Si hallas una errata ...
Casiano Rodríguez León
2006-02-21