scoping u perl-u (main vs package)
The group you are posting to is a
Usenet group . Messages posted to this group will make your email address visible to anyone on the Internet.
Your reply message has not been sent.
Your post was successful
From:
Dobrica Pavlinusic <dpav... @gmail.com>
Date: Fri, 30 Oct 2009 14:57:02 +0100
Local: Fri, Oct 30 2009 9:57 am
Subject: scoping u perl-u (main vs package)
Prije nego što postam na perlmonks i ispadnem papak, da pitam vas:
zašto $out radi kada je u main scope-u, tj. zašto zapravo nije $foobar::out?
#!/usr/bin/perl
use warnings; use strict; use Data::Dump qw(dump);
my $out; # this works
foobar::run( qw/ foo bar baz foo/ );
warn dump $out;
package foobar;
use warnings; use strict;
#my $out; # XXX this doesn't work!
sub run {
my $code = eval q| sub { my $name = shift; $out->{$name}++; } |;
$code->( $_ ) foreach @_; }
-- Dobrica Pavlinusic 2share!2flame dpav... @rot13.org Unix addict. Internet consultant. http://www.rot13.org/~dpavlin
You must
Sign in before you can post messages.
You do not have the permission required to post.
From:
Dobrica Pavlinusic <dpav... @gmail.com>
Date: Fri, 30 Oct 2009 15:14:53 +0100
Local: Fri, Oct 30 2009 10:14 am
Subject: Re: scoping u perl-u (main vs package)
On Fri, Oct 30, 2009 at 02:57:02PM +0100, Dobrica Pavlinusic wrote:
> Prije nego što postam na perlmonks i ispadnem papak, da pitam vas:
> zašto $out radi kada je u main scope-u, tj. zašto zapravo nije > $foobar::out?
Da odgovorim na svoje pitanje: zato jer perl ima file scope...
Kada to podjelim na dva file-a radi jedino:
--- main.pl ---
#!/usr/bin/perl
use warnings; use strict; use Data::Dump qw(dump);
use foobar;
foobar::run( qw/ foo bar baz foo/ );
warn dump $foobar::out;
--- foobar.pm ---
package foobar;
use warnings; use strict;
my $out; # XXX this doesn't work!
sub run {
my $code = eval q| sub { my $name = shift; $foobar::out->{$name}++; } |;
$code->( $_ ) foreach @_;
}
1;
-- Dobrica Pavlinusic 2share!2flame dpav... @rot13.org Unix addict. Internet consultant. http://www.rot13.org/~dpavlin
You must
Sign in before you can post messages.
You do not have the permission required to post.
From:
Igor Rumiha <igorrum... @gmail.com>
Date: Fri, 30 Oct 2009 15:42:55 +0100
Local: Fri, Oct 30 2009 10:42 am
Subject: Re: scoping u perl-u (main vs package)
2009/10/30 Dobrica Pavlinusic <dpav
... @gmail.com>:
> On Fri, Oct 30, 2009 at 02:57:02PM +0100, Dobrica Pavlinusic wrote:
>> Prije nego što postam na perlmonks i ispadnem papak, da pitam vas:
>> zašto $out radi kada je u main scope-u, tj. zašto zapravo nije >> $foobar::out?
> Da odgovorim na svoje pitanje: zato jer perl ima file scope...
Bezobrazni copy-paste sa
http://perldoc.perl.org/functions/my.html: A my declares the listed variables to be local (lexically) to the enclosing block, file, or eval.
Viđao sam da ljudi rade ovakve stvari:
package main;
{
my $var; # Vidljivo samo unutar ovog bloka
... kod koji koristi $var...
}
--
IgorR
You must
Sign in before you can post messages.
You do not have the permission required to post.
From:
Boris Shomodjvarac <shom... @gmail.com>
Date: Fri, 30 Oct 2009 15:51:11 +0100
Local: Fri, Oct 30 2009 10:51 am
Subject: Re: scoping u perl-u (main vs package)
Igor Rumiha wrote:
> 2009/10/30 Dobrica Pavlinusic <dpav
... @gmail.com>:
>> On Fri, Oct 30, 2009 at 02:57:02PM +0100, Dobrica Pavlinusic wrote:
>>> Prije nego što postam na perlmonks i ispadnem papak, da pitam vas:
>>> zašto $out radi kada je u main scope-u, tj. zašto zapravo nije >>> $foobar::out? >> Da odgovorim na svoje pitanje: zato jer perl ima file scope...
> Bezobrazni copy-paste sa http://perldoc.perl.org/functions/my.html:
> A my declares the listed variables to be local (lexically) to the > enclosing block, file, or eval.
> Viđao sam da ljudi rade ovakve stvari:
> package main;
> {
> my $var; # Vidljivo samo unutar ovog bloka
> ... kod koji koristi $var...
> }
Damian Conway je to stalno koristio za njegov Class::Std, inace stara
knjiga Object Oriented Perl :)
http://search.cpan.org/~dconway/Class-Std-v0.0.8/lib/Class/Std.pm#Aut...
Boris.
You must
Sign in before you can post messages.
You do not have the permission required to post.
From:
Dobrica Pavlinusic <dpav... @gmail.com>
Date: Fri, 30 Oct 2009 15:58:41 +0100
Local: Fri, Oct 30 2009 10:58 am
Subject: Re: scoping u perl-u (main vs package)
On Fri, Oct 30, 2009 at 03:42:55PM +0100, Igor Rumiha wrote:
> 2009/10/30 Dobrica Pavlinusic <dpav... @gmail.com>:
> > On Fri, Oct 30, 2009 at 02:57:02PM +0100, Dobrica Pavlinusic wrote:
> >> Prije nego što postam na perlmonks i ispadnem papak, da pitam vas:
> >> zašto $out radi kada je u main scope-u, tj. zašto zapravo nije > >> $foobar::out?
> > Da odgovorim na svoje pitanje: zato jer perl ima file scope...
> Bezobrazni copy-paste sa http://perldoc.perl.org/functions/my.html:
> A my declares the listed variables to be local (lexically) to the > enclosing block, file, or eval.
> Viđao sam da ljudi rade ovakve stvari:
> package main;
> {
> my $var; # Vidljivo samo unutar ovog bloka
> .. kod koji koristi $var...
> }
Ma, da... taj implicitni { scope } je cool i čak ga i sam koristim
(povremeno) ali nekako uvijek zaboravim na taj file scope...
-- Dobrica Pavlinusic 2share!2flame dpav... @rot13.org Unix addict. Internet consultant. http://www.rot13.org/~dpavlin
You must
Sign in before you can post messages.
You do not have the permission required to post.
From:
Igor Rumiha <igorrum... @gmail.com>
Date: Fri, 30 Oct 2009 16:32:09 +0100
Local: Fri, Oct 30 2009 11:32 am
Subject: Re: scoping u perl-u (main vs package)
2009/10/30 Dobrica Pavlinusic <dpav
... @gmail.com>:
> Ma, da... taj implicitni { scope } je cool i čak ga i sam koristim > (povremeno) ali nekako uvijek zaboravim na taj file scope...
Mala škola Enterprise Perla, lekcija br. 114:
Jedan package, jedan file. I obratno.
;)
-- IgorR
You must
Sign in before you can post messages.
You do not have the permission required to post.