/ Forside / Teknologi / Udvikling / Perl / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Perl
#NavnPoint
bjarneA 141
poul_from 50
soccer 30
Nicknack 14
Tmpj 0
Variabel scopes under Mason
Fra : Morten Guldager


Dato : 17-12-04 23:51

Hejsa,

Jeg sidder og nørkler lidt med noget Mason kode.

Her er min kode:

GLOBVAR = <% $GLOBVAR %>
FUNKY = <% $FUNKY %>

<%once>
use strict;
use warnings;

my $GLOBVAR = 'globvar';
</%once>

<%init>
my $FUNKY = funky();

sub funky
{
return "funky : $GLOBVAR";
}
</%init>

Jeg fatter ikke hvorfor compileren (eller Mason) siger:

Variable "$GLOBVAR" will not stay shared

hvis jeg flytter

my $GLOBVAR = 'globvar';

ned i min <%init> blok.

Er det forøvrigt furnuftigt at erklære funktioner der udelukkende
skal bruges i den aktuelle component i <%init> blokken?


/Morten

 
 
Adam Sjøgren (18-12-2004)
Kommentar
Fra : Adam Sjøgren


Dato : 18-12-04 00:58

On Fri, 17 Dec 2004 22:50:49 GMT, Morten wrote:

> <%once>
> use strict;

(Er du sikkert på use strict er nødvendig?

<http://masonhq.com/?FAQ:Components#h-can_i_use_globals_in_components_>)

> Jeg fatter ikke hvorfor compileren (eller Mason) siger:

> Variable "$GLOBVAR" will not stay shared

> hvis jeg flytter

> my $GLOBVAR = 'globvar';

> ned i min <%init> blok.

Et gæt: Fordi det er muligt at kalde funktionen uden at
<%init>-blokken er kørt, og dermed er det muligt at $GLOBVAR ikke
"findes" endnu?

Se evt.:

"<%once>

This code executes once when the component is loaded. Variables
declared in this section can be seen in all of a component's code
and persist for the lifetime of the component."

<http://masonhq.com/docs/manual/Devel.html#__once_>

> Er det forøvrigt furnuftigt at erklære funktioner der udelukkende
> skal bruges i den aktuelle component i <%init> blokken?

Det er generelt en dårlig idé at erklære funktioner i
Mason-komponenter. Se:

<http://masonhq.com/?FAQ:Components#h-can_i_define_subroutines_in_components_>


Mvh.

--
"Snurra min jord igen" Adam Sjøgren
asjo@koldfront.dk

Søg
Reklame
Statistik
Spørgsmål : 177577
Tips : 31968
Nyheder : 719565
Indlæg : 6409071
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste