http://qs1969.pair.com?node_id=657697

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

Dear Monks,

The following code does not compile:

use strict; use warnings; use Carp qw(croak); package Test; #use Carp qw(croak); sub croak_test { croak "this is a test"; } Test::croak_test;
and produces the following output:
String found where operator expected at croaktest.pl line 8, near "cro +ak "this is a test"" (Do you need to predeclare croak?) syntax error at croaktest.pl line 8, near "croak "this is a test"" croaktest.pl had compilation errors.
But if I put the "use Carp qw(croak);" statement after the package it does work:
use strict; use warnings; #use Carp qw(croak); package Test; use Carp qw(croak); sub croak_test { croak "this is a test"; } Test::croak_test;
I don't understand why the "use Carp qw(croak)" seemingly must be declared after the package, but the "use strict" doesn't. How could I determine what is necessary for other "use" statements?

If someone could offer some insight as to what I'm not understanding, I'd really appreciate it.

Thank you,
memnoch