On Tue, 17 Apr 2012 14:43:01 +0100 Gary Stainburn <gary.stainb...@ringways.co.uk> wrote:
> On Tuesday 17 April 2012 13:30:59 Manfred Lotz wrote: > > > > One example is this: > > > > #! /usr/bin/perl > > > > use strict; > > use warnings; > > > > mysub; > > > > sub mysub { > > print "Hi there\n"; > > } > > > > If you run this you get an error: > > Bareword "mysub" not allowed while "strict subs" in use > > at ./testsub.pl line 6. Execution of ./testsub.pl aborted due to > > compilation errors. > > > > > > Perl tells you that it has no idea what you mean when you use the > > bareword mysub. > > > > > > Now you have two options to solve it. > > > > 1. &mysub; > > > > Using the sigil & you tell Perl that mysub is a subroutine. > > > > 2. mysub(); > > > > Usind () after mysub you also tell Perl that mysub is a subroutine. > > > > > > 3. &mysub(); > > > > Combining 1. and 2. works also but is not recommended. Hmm, at > > least I do no recommend it. > > > > > > Use 2. and you'll be happy. > > > > > > There are surely some other situations where using & might be > > appropriate. But this one came into my mind immediately. > >Hi Manfred, > > Thank you for this, but below is what I am meaning. > > Gary > > [root@stan ~]# cat t.pl > #!/usr/bin/perl -w > > use strict; > use warnings; > > > mysub(); > > > sub mysub() { > print "hello world\n"; > } > [root@stan ~]# ./t.pl > main::mysub() called too early to check prototype at ./t.pl line 7. > hello world > > } > You have sub mysub() { instead of sub mysub { which is the correct way. -- Manfred -- To unsubscribe, e-mail: beginners-unsubscr...@perl.org For additional commands, e-mail: beginners-h...@perl.org http://learn.perl.org/