Beefy Boxes and Bandwidth Generously Provided by pair Networks
Welcome to the Monastery
 
PerlMonks  

Perl module error

by Vaclav_ (Novice)
on Oct 04, 2013 at 14:49 UTC ( #1056888=perlquestion: print w/ replies, xml ) Need Help??
Vaclav_ has asked for the wisdom of the Perl Monks concerning the following question:

Can you help me why does this code give the following error: "Missing right curly or square bracket at Gate88/Bot/Core/KeyManager.pm line 1, at end of line syntax error at Gate88/Bot/Core/KeyManager.pm line 1, at EOF"
package Gate88::Bot::Core::KeyManager; use strict; use warnings; sub new { my $class = shift; my $gs = shift; my $nm = shift; my $self = bless({ 'gs' => $gs, 'nm' => $nm, }, $class); return $self; } 1;
If I remove the method new, perl says syntax is Ok.

Comment on Perl module error
Download Code
Replies are listed 'Best First'.
Re: Perl module error
by toolic (Bishop) on Oct 04, 2013 at 14:54 UTC
    I do not get any error:
    perl -c KeyManager.pm KeyManager.pm syntax OK

    How are you using this? I even call it this way:

    use Gate88::Bot::Core::KeyManager; my $x = Gate88::Bot::Core::KeyManager->new();
      Same like you:
      use Gate88::Bot::Core::KeyManager; $s->{'keyboard'} = Gate88::Bot::Core::KeyManager->new( $s->{'gs'}, $s- +>{'nm'} );
      ($s is another object) If I comment the use... line it says syntax Ok, so it must be in the module.
        Maybe there is some problematic whitespace in your .pm file:
        cat -A KeyManager.pm

        You should download the code from your post, just like I did, and paste it into a new file.

Re: Perl module error
by boftx (Deacon) on Oct 04, 2013 at 23:36 UTC

    Sometimes you can get a meaningful error message from perltidy that will tell you what line has a missing brace/bracket/paren. I would try that and see if it sheds any light. Using that, and perl -c as you did, should point out any problem areas. (But it is hard to imagine that if it passes perl -c that there is anything wrong in the file itself.)

    On time, cheap, compliant with final specs. Pick two.
      Finally. After running perltidy on the module, it's syntax Ok. Perltidy add/removes whitespaces only, right? What could I have messed up with them, I thought whitespaces doesn't really matter. This is not python :D

        I thought whitespaces doesn't really matter. This is not python :D

        No, whitespace doesn't mostly matter, but maybe you invoked the MACRO precompiler features ( perlrun ) or loaded a source filter via PERL5OPT or something like that, something that inserted an extra stray curly brace or square bracket

        Did you save a copy of the broken one? Did you  use Data::Dumper; use Path::Tiny; dd( path( $file )->slurp_raw ) ;

        I suggested perltidy because it will sometimes complain about missing braces, etc, and give you the line number that was unmatched in a way different than perl -c will in the log file. You are indeed most correct that white space doesn't matter. But that doesn't mean that a silly typo doesn't creep in now and again. :)

        On time, cheap, compliant with final specs. Pick two.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://1056888]
Approved by toolic
Front-paged by toolic
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others pondering the Monastery: (7)
As of 2015-07-31 03:31 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (274 votes), past polls