[bcn-pm] manipular un fitxer canviant xifres negatives per un zero

Xavier Noria fxn a hashref.com
dll mar 17 02:17:14 PDT 2014


Hola Enric,

Perl es una mica diferent a la resta de llenguatges en aquest particular
punt. Conceptualment no distingeix nombres i cadenes, tot es igual per ell
i interpreta les dades segons el context.

Perl te un solo tipus de dada que engloba aquests dos i mes, el tipus
escalar.

Aixi, quan tu fas $a + $b Perl diu: ah, "+" es un operador binari
*numeric*, he d'interpretar $a com a nombre, $b com a nombre, i tornar un
escalar amb la suma. Mentre que a $a . $b, interpreta que $a i $b cal
veure-les com a cadenes, i igualment torna un escalar amb la seva
concatenacio.

L'interpret te optimitzacions que fan que aixo funcioni en C de forma
eficient, pero a nivell de programador el model mental es el que et dic[*].

En el teu codi, $linia < 0 es correcte. Pero cal revisar l'assignacio que
te un signe igual de mes:

    $linia = 0; # un sol =

i possiblement voldras un salt de linia en treure el valor al fitxer:

    print $OUTFILE "$linea\n";

A mes a mes, cal que obris $OUTFILE una sola vegada al principi, perque si
no cada cop que l'obres esborra el que hi havia.

T'has llegit "Learning Perl"?

Xavier

[*] Hi ha algun operador binari dubtos que depen de que son els escalars
per sota en aquell moment de l'execucio del programa, pero es podria
considerar un bug de la definicio del llenguatge, no encaixen.
-------------- part següent --------------
Un document HTML ha estat eliminat...
URL: <http://mail.pm.org/pipermail/barcelona-pm/attachments/20140317/a9724d2d/attachment.html>


Més informació sobre la llista de correu Barcelona-pm