Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer
 
PerlMonks  

Re: errors revisited

by damian1301 (Curate)
on Aug 22, 2001 at 22:33 UTC ( [id://107077]=note: print w/replies, xml ) Need Help??


in reply to errors revisited

damian1301 ends it here

When run WITHOUT CGI::Carp, it gives clearer errors. This is a revised version of your script.

#!/usr/bin/perl -w #use CGI::Carp('fatalsToBrowser'); use Carp; use diagnostics; use strict; use warnings; my @pages; my @xfilenames; my @filenames; my @xtitles; my @titles; my @xheadings; my @headings; my @xstuff; my $xstuff=""; my @stuff; my @xtemplate; my $xtemplate=""; my @template; open(PAGES, "<pages.txt") || die $!; @pages = <PAGES>; close(PAGES); foreach $_ (@pages) { if (m/^\*{4}filename.ext\*{4}/) { push(@xfilenames, $_) } elsif (m/^\*{4}title\*{4}/) { push(@xtitles, $_) } elsif (m/^\*{4}heading\*{4}/) { push(@xheadings, $_) } else { push(@xstuff, $_) } } foreach(@xfilenames) { s/^\*{4}filename.ext\*{4}//; chomp $_; push @filenames, $_; } foreach(@xtitles) { s/^\*{4}title\*{4}//; chomp $_; push @titles, $_; } foreach $_ (@xheadings) { s/^\*{4}heading\*{4}//; chomp $_; push @headings, $_; } $xstuff = join "", @xstuff; @stuff = $xstuff =~ /\*{4}stuff\*{4}(.*?)\*{4}endstuff\*{4}/sg; open(TEMPLATE, "<template.html") || die $!; @xtemplate = <TEMPLATE>; close (TEMPLATE); $xtemplate = join"", @xtemplate; @template = $xtemplate =~ /^(.*?)\*{4}filename.ext\*{4}/sg; push (@template, $xtemplate =~ /\*{4}filename.ext\*{4}(.*?)\*{4}title\ +*{4}/sg); push (@template, $xtemplate =~ /\*{4}title\*{4}(.*?)\*{4}headings\*{4} +/sg); push (@template, $xtemplate =~ /\*{4}headings\*{4}(.*?)/sg); for (my $i=0; $i < (@filenames); $i++) { open(FILE, ">$filenames[$i]") || die $!; print FILE qq($template[0] $titles[$i] $template[1] $headings[$i] +$template[2] $stuff[$i] $template[3]); close(FILE); } print "Content-type:text/html\n\n"; print <<EndHTML; <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transisional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"> <html> <head> <title>create</title> </head> <body> EndHTML foreach (@filenames) { print " <p>Name:$_</p>"; } print "<hr />"; foreach (@titles) { print "<p>Titles:$_</p>"; } print "<hr />"; foreach (@headings) { print "<p>Headings:$_</p>"; } print "<hr />"; foreach (@stuff) { print "<p>stuff:$_</p>"; } print <<EndHTML; </body> </html> EndHTML
NOTE that ALL errors had to do with not declaring your variables or misspeeling them. Be even more careful next time with your typing and spare us the time :).
UPDATE: Thanks bikeNomad - I just caught that myself :)

$_.=($=+(6<<1));print(chr(my$a=$_));$^H=$_+$_;$_=$^H; print chr($_-39); # Easy but its ok.

Replies are listed 'Best First'.
Re: Re: errors revisited
by maddfisherman (Sexton) on Aug 22, 2001 at 22:48 UTC
    i ran your revised code it gave me these errors????
    C:\Perl>perl -cw create.pl [Wed Aug 22 11:46:32 2001] (eval 1): Array found where operator expect +ed at (eva l 1) line 1, at end of line [Wed Aug 22 11:46:32 2001] (eval 1): (Do you need to predeclare Car +p::longmes s?) [Wed Aug 22 11:46:32 2001] (eval 1): Array found where operator expect +ed at (eva l 1) line 2, at end of line [Wed Aug 22 11:46:32 2001] (eval 1): (Do you need to predeclare Car +p::shortme ss?) [Wed Aug 22 11:46:32 2001] (eval 1): Array found where operator expect +ed at (eva l 1) line 3, at end of line [Wed Aug 22 11:46:32 2001] (eval 1): (Do you need to predeclare Car +p::shortme ss?) [Wed Aug 22 11:46:32 2001] (eval 1): Array found where operator expect +ed at (eva l 1) line 4, at end of line [Wed Aug 22 11:46:32 2001] (eval 1): (Do you need to predeclare Car +p::longmes s?) Undefined subroutine &Carp::longmess called at C:\PERL\lib/Carp.pm lin +e 296.
      His revised code didn't use CGI::Carp, so it couldn't have given those errors. Did you try to run his program from the command line as it stands?

      Note that there was still an error that was caught by the warnings/diagnostics: on line 93, there is a reference to $a, but nothing sets it. You probably want:

      foreach my $a (@filenames) { print "$a <p>Name:$_</p>"; } print "<hr />";

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://107077]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others perusing the Monastery: (4)
As of 2024-04-25 16:41 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found