I'm trying to import scalars from an external file (fried.dat) and print them in the current file (index.pl).
----- Original Message ----- From: "Nikola Janceski" <[EMAIL PROTECTED]> To: "'Kyle Babich'" <[EMAIL PROTECTED]>; <[EMAIL PROTECTED]> Sent: Wednesday, July 03, 2002 11:37 AM Subject: RE: 2 Questions > why's the our in $name? you don't even use $name anywhere else. > > Here are some examples of "good" code using some of your ideas (still don't > know what you are trying to accomplish). > > __CODE__ > > #!/usr/bin/perl -wT > use strict; > use Data::Dumper; > use CGI qw( :standard ); > > print header ( "text/html" ); > > our $name; > > my $hash_ref = do ( 'fried.dat' ) || die "error: unable to open > fried.txt\n"; > print Dumper $hash_ref; > > print <<"EndOfHTML"; > > name = $name > hash_ref name = $$hash_ref{name} > > EndOfHTML > > __END__ > > > fried.dat contains: > $name = "chicken"; > > { > name => 'fried' > } > > > > -----Original Message----- > > From: Kyle Babich [mailto:[EMAIL PROTECTED]] > > Sent: Wednesday, July 03, 2002 11:07 AM > > To: [EMAIL PROTECTED] > > Subject: Re: 2 Questions > > > > > > Still getting the same problem, name requires explicit package name. > > > > #!/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"; > > > > our($name); chicken > > > > EndOfHTML > > > > > > > > > > fried.dat: > > > > { > > name => 'fried' > > } > > > > > > ----- Original Message ----- > > From: "Nikola Janceski" <[EMAIL PROTECTED]> > > To: "'Kyle Babich'" <[EMAIL PROTECTED]>; <[EMAIL PROTECTED]> > > Cc: "beginners-cgi" <[EMAIL PROTECTED]> > > Sent: Wednesday, July 03, 2002 9:25 AM > > Subject: RE: 2 Questions > > > > > > > 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] > > > > -------------------------------------------------------------------------- -- > -------------------- > 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] > > > -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]