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]

Reply via email to