[Israel.pm] A Perl 5 Gotcha
Gaal Yahas
gaal at forum2.org
Fri Mar 6 12:00:45 PST 2009
Lexical pad, not namespace.
If by "shouldn't work" you mean, "it surprises me that it does work",
that's one thing, but of course it *should* work that way because
that's how the language is defined. It isn't a design oversight.
That's how you implement static variables, for example.
Of if you mean "the following is bad style:
use strict;
my(five hundred variables here);
sub uses_lexicals_as_if_they_were_globas {
# ...
}
sub also_partakes {
# ...
}
" then sure, most people would agree with you.
On Fri, Mar 6, 2009 at 6:47 PM, sawyer x <xsawyerx at gmail.com> wrote:
> Bad choice of words. I confused it with calling a subroutine with &,
> such as &print_name().
> The problem with putting the subroutines at the end is that it makes
> the previous variables in the code apparent to that subroutine. It's
> not lexically correct and provides an unclean environment for the
> subroutine.
>
> my $name = 'sawyer';
>
> sub print_name {
> # this shouldn't work because the subroutine
> # is a different namespace, but it does
> # because the subroutine sees all the previous
> # variables and the namespace isn't clean
> print "$name\n";
> }
>
> On Fri, Mar 6, 2009 at 6:27 PM, Yitzchak Scott-Thoennes
> <sthoenna at efn.org> wrote:
>>
>> On Fri, March 6, 2009 8:18 am, sawyer x wrote:
>> > Beyond that, you're defining the subroutine at the end, which exposes
>> > it to @_.
>>
>> What do you mean by that?
>>
>> _______________________________________________
>> Perl mailing list
>> Perl at perl.org.il
>> http://perl.org.il/mailman/listinfo/perl
> _______________________________________________
> Perl mailing list
> Perl at perl.org.il
> http://perl.org.il/mailman/listinfo/perl
>
--
Gaal Yahas <gaal at forum2.org>
http://gaal.livejournal.com/
More information about the Perl
mailing list