scoping!!! my only scopes the end of the file!

so my in fried.dat is scoped only in fried.dat.

use our($name);

> -----Original Message-----
> From: Kyle Babich [mailto:[EMAIL PROTECTED]]
> Sent: Wednesday, July 03, 2002 9:19 AM
> To: [EMAIL PROTECTED]
> Cc: beginners-cgi
> Subject: Re: 2 Questions
> 
> 
> I'm still getting the $name requires explicit package name.
> 
> Here is what I have in index.pl
> 
> #!/usr/bin/perl -wT
> use strict;
> use Data::Dumper;
> use CGI qw( :standard );
> 
> print header ( "text/html" );
> 
> my $hash_ref = do ( 'fried.dat' ) || die "error:  unable to open
> fried.txt\n";
>       print Dumper $hash_ref;
> 
> print <<"EndOfHTML";
> 
> $name chicken
> 
> EndOfHTML
> 
> 
> And here is what I have in fried.dat
> 
> {
>       name => 'fried'
> }
> 
> 
> I have both chmod'd to 755.  What is wrong with it?
> 
> On Tue, 2 Jul 2002 17:16:00 -0700 (PDT), "Ovid" <[EMAIL PROTECTED]> said:
> > --- Kyle Babich <[EMAIL PROTECTED]> wrote:
> > > How can I import scalars, arrays, etc. from external perl and text
> > > files?
> > > 
> > > This is what I have in index.pl:
> > > 
> > > #!/usr/local/bin/perl -wT
> > > use strict;
> > > use CGI qw/ :standard /;
> > > 
> > > print header ( 'text/html' );
> > > 
> > > open(TEXT,"<fried.txt") or die ("error:  fried.txt failed\n");
> > >   while(<TEXT>) {
> > >           print;
> > >   }
> > > close(TEXT) or die("error:  fried.txt failed\n");
> > > 
> > > print "$name chicken";
> > > 
> > > And this is what I have in fried.txt:
> > > 
> > > my $name = "chicken";
> > > 
> > > So why doesn't it work?
> > 
> > --- Kyle Babich <[EMAIL PROTECTED]> wrote:
> > > How can I import scalars, arrays, etc. from external perl and text
> > > files?
> > > 
> > > This is what I have in index.pl:
> > > 
> > > #!/usr/local/bin/perl -wT
> > > use strict;
> > > use CGI qw/ :standard /;
> > > 
> > > print header ( 'text/html' );
> > > 
> > > open(TEXT,"<fried.txt") or die ("error:  fried.txt failed\n");
> > >   while(<TEXT>) {
> > >           print;
> > >   }
> > > close(TEXT) or die("error:  fried.txt failed\n");
> > > 
> > > print "$name chicken";
> > > 
> > > And this is what I have in fried.txt:
> > > 
> > > my $name = "chicken";
> > > 
> > > So why doesn't it work?
> > 
> > When declaring variables with 'my', you wind up lexically 
> scoping them.
> >  This is "file" scoped,
> > however, so a lexically scoped variable in another file is not
> > accessible to you.
> > 
> > One easy (and kind of simplistic) way of getting around 
> this is to have
> > your variables in the
> > second file in a hash ref.  Add the following to a file named
> > "test.dat":
> > 
> >   {
> >     one => 'uno',
> >     two => 'dos'
> >   }
> > 
> > Then, in the same directory, create and run the following program:
> > 
> >   #!/usr/bin/perl -w
> >   use strict;
> >   use Data::Dumper;
> > 
> >   my $hash_ref = do ( 'test.dat' ) or die "Cannot open 
> test.dat: $!";
> >   print Dumper $hash_ref;
> > 
> > The above form of 'do' is a special form that "evals" the 
> contents of
> > the file.  The last thing
> > returned from the eval is the last results of the last expression
> > evaluated, in this case, a hash
> > reference.  Be careful with this technique, though.  If someone else
> > can alter the contents of
> > 'test.dat', you could be eval'ing unsafe code.
> > 
> > Cheers,
> > Curtis "Ovid" Poe
> > 
> > =====
> > "Ovid" on http://www.perlmonks.org/
> > Someone asked me how to count to 10 in Perl:
> > push@A,$_ for reverse 
> q.e...q.n.;for(@A){$_=unpack(q|c|,$_);@a=split//;
> > shift@a;shift@a if $a[$[]eq$[;$_=join q||,@a};print 
> $_,$/for reverse @A
> > 
> > __________________________________________________
> > Do You Yahoo!?
> > Sign up for SBC Yahoo! Dial - First Month Free
> > http://sbc.yahoo.com
> > 
> > 
> > 
> > 
> 
> -- 
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 

----------------------------------------------------------------------------
--------------------
The views and opinions expressed in this email message are the sender's
own, and do not necessarily represent the views and opinions of Summit
Systems Inc.


-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to