Why does Perl say Global symbol “SYMBOL” requires explicit package name at PROGRAM.pl line X?

前端 未结 2 1234
攒了一身酷
攒了一身酷 2020-12-20 15:32

I´m writing my first programs in Perl, and wrote this:

use strict;
use warnings;
$animal = \"camel\";
print($animal);

When I run it, I get

相关标签:
2条回答
  • 2020-12-20 15:54

    You have to put:

    my $animal = "camel"
    

    when using use strict.

    0 讨论(0)
  • 2020-12-20 15:59

    use strict; forces you to declare your variables before using them. If you don't (as in your code sample), you'll get that error.

    To declare your variable, change this line:

    $animal = "camell";
    

    To:

    my $animal = "camell";
    

    See "Declaring variables" for a more in-depth explanation, and also the Perldoc section for use strict.

    P.S. Camel is spelt "camel" :-)

    Edit: What the error message actually means is that Perl can't find a variable named $animal since it hasn't been declared, and assumes that it must be a variable defined in a package, but that you forgot to prefix it with the package name, e.g. $packageName::animal. Obviously, this isn't the case here, you simply hadn't declared $animal.

    0 讨论(0)
提交回复
热议问题