http://www.perlmonks.org?node_id=781362


in reply to Perl Module ending without 1;

What happens if I write a Perl module which does not end with 1;?
You could get an error.

To satisfy my curiosity, I created a contrived example to prove that an error would result with use. Since I had never experienced this in practice, it is probably difficult to achieve, but it is possible. Here is a legal (but probably unlikely) scenario. Notice that I have commented out the '1;' at the end of the package. If you uncomment it, there will be no error:

C:\Perl>type MyFoo.pm package MyFoo; use strict; use warnings; sub bar {print "bar\n"} #1; C:\Perl>type foo.pl use warnings; use strict; use MyFoo; print "hello\n"; MyFoo::bar(); C:\Perl>perl foo.pl MyFoo.pm did not return a true value at foo.pl line 3. BEGIN failed--compilation aborted at foo.pl line 3.

Since it is simple enough to do, and it is a well-known convention, it is a good practice to add '1;'.