Kyle --

...and then Kyle Babich said...
% 
% Ok, I decided to make my test.cgi into a kind of refernce page for when 
% I'm creating my site.  There is some kind of problem with my hash.  
% Once again can someone explain to me what I'm doing wrong?

As perl tells you, there are a few errors.


% 
% Here is what I got from doing perl -Tcw in the shell:
% > bash-2.05$ perl -Tcw test.cgi
% > bash-2.05$ Scalar found where operator expected at test.cgi line 37, 
% near "print
% >  "$link's"
% > >   (Might be a runaway multi-line "" string starting on line 36)
% > >         (Do you need to predeclare print?)

This is, in fact, something like that; you have a " in front of foreach.


% > > Bareword found where operator expected at test.cgi line 37, 
% near "$link's page
% > "
% > >         (Missing operator before page?)
% > > Global symbol "%pages" requires explicit package name at test.cgi 
% line 32.
% > > Global symbol "$link" requires explicit package name at test.cgi 
% line 36.
% > > syntax error at test.cgi line 37, near "print "$link's "

As a result, this follows.


% > bash: Scalar: command not found
% > bash-2.05$ Global symbol "%pages" requires explicit package name at 
% test.cgi lin
% > e 37.

Same thing here.  So everything can be traced back to one point, as far
as I can tell :-)


% 
% Here is the source:
...
% 
% my $foreach = "foreach $link (links %pages) {
%       print "$link's page:  $pages{$link}\n";
% }";

Here ya go.  It looks like you're trying to save this foreach loop for
later, probably to spit out the contents in your HTML, but your quoting
gets messed up.  You have

  ... = "foreach ...
    print " ... more garbage that perl sees as OUTSIDE the quotes

and so that won't work.

Usually I'd just say that you need to escape the inside quotes or use
different quotes (perhaps qw@@ or the like) but that will simply give you
the literal text of the foreach loop in your HTML output, which probably
isn't what you want.

It's still early :-) and I don't see an elegant way of doing this through
my pre-Cheerios fog.  You could, though, try something like

  my foreach = "" ;
  foreach $link (keys %pages)   # you meant this instead of (links %pages), no?
  {
    foreach =. "$link's page: $pages{$link}\n"
  }

to iterate through your links and add the text you want to a $foreach
variable, which ou can then spit out later.  It feels like there should
be a less clunky way, but other than breaking the HTML section into two
or more here docs I don't see it.  Perhaps one of the other wizards will
come up with something prettier :-)


HTH & HAND

:-D
-- 
David T-G                      * It's easier to fight for one's principles
(play) [EMAIL PROTECTED] * than to live up to them. -- fortune cookie
(work) [EMAIL PROTECTED]
http://www.justpickone.org/davidtg/    Shpx gur Pbzzhavpngvbaf Qrprapl Npg!

Attachment: msg05466/pgp00000.pgp
Description: PGP signature

Reply via email to