[SP-pm] Dúvida entre Scalar Context e List Context

Thiago Rondon thiago at aware.com.br
Wed Mar 24 06:17:07 PDT 2010


Do código fonte do perl 5.10.1, mg.c:

/*
=head1 Magical Functions

"Magic" is special data attached to SV structures in order to give them
"magical" properties.  When any Perl code tries to read from, or assign to,
an SV marked as magical, it calls the 'get' or 'set' function associated
with that SV's magic. A get is called prior to reading an SV, in order to
give it a chance to update its internal value (get on $. writes the line
number of the last read filehandle into to the SV's IV slot), while
set is called after an SV has been written to, in order to allow it to make
use of its changed value (set on $/ copies the SV's new value to the
PL_rs global variable).

Magic is implemented as a linked list of MAGIC structures attached to the
SV. Each MAGIC struct holds the type of the magic, a pointer to an array
of functions that implement the get(), set(), length() etc functions,
plus space for some flags and pointers. For example, a tied variable has
a MAGIC structure that contains a pointer to the object associated with the
tie.

*/

A mágica (grámatica) pode ser explicada na estrutura do objeto, que 
contém a informação do atributo e o contexto. Podemos chamar esta mágica 
de grámatica (ou regras de transformação)

struct obj { A, R, ..} <> contexto <> struct obj { A, R, .. }

Ps.: Curiosos, vejam o módulo core, Class::Struct.

-Thiago Rondon






More information about the SaoPaulo-pm mailing list