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]

Reply via email to