Perl syntax
Anthony
agamemnon67-bJEeYj9oJeDQT0dZR+AlfA at public.gmane.org
Mon May 30 14:21:04 UTC 2005
Missed a line.
To declare a variable to only be valid from
declaration to the end of the block use.
local $var="data;
Anthony
--- Anthony <agamemnon67-bJEeYj9oJeDQT0dZR+AlfA at public.gmane.org> wrote:
> It is very important that you understand exactly
> what
> it is you are doing to fix the errors. Someone said
> just put
>
> my $var="data";
>
> True it does stop the error messages but unless you
> understand the correct scoping in the variables,
> your
> program will have a lot worse logic problems down
> the
> road.
>
> You have to ensure your variables are scoped
> properly.
> For example, when you:
> use strict;
>
> You must ensure to declare whether your variables
> are
> dynmaically or lexically scoped.
> Therefore you cannot declare a variable like this:
>
> $var="data";
>
> You have to tell the Perl interpreter in which
> blocks
> the variables are valid.
>
> my $var="data";
>
> in the main prgram will ensure that $var is always
> valid in the program. If it is placed inside its'
> own
> block, $var will be valid inside that block, for
> instance a subroutine. This allows you to reuse
> variables. so $var can be different inside different
> blocks.
>
> Additional you can set a variable to only be valid
> from the declaration until the end of the block.
>
> Hope that helps.
>
> Anthony
> --- John Wildberger <wildberger-iRg7kjdsKiH3fQ9qLvQP4Q at public.gmane.org> wrote:
> > In the recent thread on this subject the 'use
> > strict' pragma was very strongly
> > suggessted.
> > Here is a very simple program urc2_1.pl:
> >
> > #! /usr/bin/perl -w
> > use strict;
> > while (<>){
> > $count{$ARGV}++;
> > }
> > foreach $file (sort keys %count){
> > print "$file has $count{$file} lines\n";
> > }
> >
> > When executed it gives the following error
> messages:
> >
> > [john]: 09:46 AM [~/perl]
> > $ ./urc2_1.pl urc2_1.pl
> > Global symbol "%count" requires explicit package
> > name at ./urc2_1.pl line 4.
> > Global symbol "$file" requires explicit package
> name
> > at ./urc2_1.pl line 6.
> > Global symbol "%count" requires explicit package
> > name at ./urc2_1.pl line 6.
> > Global symbol "$file" requires explicit package
> name
> > at ./urc2_1.pl line 7.
> > Global symbol "%count" requires explicit package
> > name at ./urc2_1.pl line 7.
> > Global symbol "$file" requires explicit package
> name
> > at ./urc2_1.pl line 7.
> > Execution of ./urc2_1.pl aborted due to
> compilation
> > errors.
> >
> > Without the 'use strict' pragma it executes
> without
> > errors like this:
> >
> > [john]: 09:44 AM [~/perl]
> > $ ./urc2_1.pl urc2_1.pl
> > urc2_1.pl has 9 lines
> >
> > What changes to the program will I have to make to
> > correct this?
> > John
> > --
> > The Toronto Linux Users Group. Meetings:
> > http://tlug.ss.org
> > TLUG requests: Linux topics, No HTML, wrap text
> > below 80 columns
> > How to UNSUBSCRIBE:
> > http://tlug.ss.org/subscribe.shtml
> >
> --
> The Toronto Linux Users Group. Meetings:
> http://tlug.ss.org
> TLUG requests: Linux topics, No HTML, wrap text
> below 80 columns
> How to UNSUBSCRIBE:
> http://tlug.ss.org/subscribe.shtml
>
--
The Toronto Linux Users Group. Meetings: http://tlug.ss.org
TLUG requests: Linux topics, No HTML, wrap text below 80 columns
How to UNSUBSCRIBE: http://tlug.ss.org/subscribe.shtml
More information about the Legacy
mailing list