Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation
 
PerlMonks  

syntax error at example.pl line 1

by reichktr (Initiate)
on Jun 16, 2016 at 21:11 UTC ( #1165910=perlquestion: print w/replies, xml ) Need Help??

reichktr has asked for the wisdom of the Perl Monks concerning the following question:

I am beginer to this language and my first code is giving me syntax error, please help code:

use strict; use warnings; use diagnostics; my $hero = 'Ovid'; my $fool = $hero; print "$hero isn't that much of a hero. $fool is a fool.\n"; $hero = 'anybody else'; print "$hero is probably more of a hero than $fool.\n" my %snacks = ( stinky => 'limburger', yummy => 'brie', surprise => 'soap slices', ); my @cheese_tray = values %snacks; print "our cheese tray will have: "; for my $cheese (@cheese_tray) { print "'$cheese' "; } print "\n";

error:

@cisnet:~/kodzo_perl/chapter3$ perl example.pl syntax error at example.pl line 12, near "my " Global symbol "%snacks" requires explicit package name (did you forget + to declare "my %snacks"?) at example.pl line 12. Global symbol "%snacks" requires explicit package name (did you forget + to declare "my %snacks"?) at example.pl line 17. Execution of example.pl aborted due to compilation errors (#1) (F) Probably means you had a syntax error. Common reasons include +: A keyword is misspelled. A semicolon is missing. A comma is missing. An opening or closing parenthesis is missing. An opening or closing brace is missing. A closing quote is missing. Often there will be another error message associated with the synt +ax error giving more information. (Sometimes it helps to turn on -w. +) The error message itself often tells you where it was in the line +when it decided to give up. Sometimes the actual error is several toke +ns before this, because Perl is good at understanding random input. Occasionally the line number may be misleading, and once in a blue + moon the only way to figure out what's triggering the error is to call perl -c repeatedly, chopping away half the program each time to se +e if the error went away. Sort of the cybernetic version of 20 ques +tions. Uncaught exception from user code: syntax error at example.pl line 12, near "my " Global symbol "%snacks" requires explicit package name (did yo +u forget to declare "my %snacks"?) at example.pl line 12. Global symbol "%snacks" requires explicit package name (did yo +u forget to declare "my %snacks"?) at example.pl line 17. Execution of example.pl aborted due to compilation errors.

Replies are listed 'Best First'.
Re: syntax error at example.pl line 1
by hippo (Bishop) on Jun 16, 2016 at 21:18 UTC

    It's a missing semi-colon. Don't get down about it - nine times out of ten it's a missing semi-colon.

Re: syntax error at example.pl line 1
by Marshall (Canon) on Jun 17, 2016 at 14:08 UTC
    Often or maybe even most often with syntax errors, the line that is complained about occurs after the actual error because the compiler doesn't realize that something is wrong until it sees something else that it doesn't understand. In complex cases, this "complained about line" could be many lines past the "real error line".

    I see the error right away, but say, you don't. Put __END__ right before the complained about line and see if you still get the error. If you still don't see then move the __END__ statement up. Perhaps in this case to below the first "print". That will work. Then you know that the "real error" is between those two points. Rinse, Repeat.

    The key tip here is that starting in column 1, put __END__ and that stops the compilation process and runs the code to that point. Often you will see posts here where there is an END statement and then an example printout follows. This is an easy way to put all of the info into a single .pl post.

    I very seldom write the whole program before running it. Write code, run code, debug, write more code,... Often I find some mistake early that affects how I write the rest of the code. That's true in assembly, Perl, C or whatever.

Re: syntax error at example.pl line 1
by ExReg (Priest) on Jun 17, 2016 at 01:37 UTC

    After you add that missing semicolon, you might want to look at single quotes around a variable name towards the end.

      If you're thinking of
          print "'$cheese' ";
      it should be ok because the single-quotes are actually in | actually literal characters within a double-quote operator:

      c:\@Work\Perl\monks>perl -wMstrict -le "my $cheese = 'limburger'; print \"'$cheese' \"; " 'limburger'


      Give a man a fish:  <%-{-{-{-<

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others drinking their drinks and smoking their pipes about the Monastery: (2)
As of 2021-12-01 06:27 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found

    Notices?