You need to use strictures, which enable messages telling you what's wrong:
use strict; use warnings;. You need to import
say, eg with
use feature 'say';. Also, you didn't assign the coderef to
$method, so there's nothing to go to with
goto. And since you're (wisely) not doing string
eval, you don't need the eval block (but if you do need it for compatibility with other code, check that
$method has been assigned a coderef before trying to execute it). And you need to
use Carp; if you're going to put it in your code (but the way it's used,
die() would be adequate).
See the following:
#! /usr/bin/env perl
package Foo;
use strict;
use warnings;
use feature 'say';
sub AUTOLOAD {
(my $method = our $AUTOLOAD) =~ s/.*:://;
return if $method eq 'DESTROY';
say "Foo::$method was called";
die "bad method $method\n" if $method ~~ [qw/troz narf/];
if ($method eq 'day') {
return +(localtime)[3];
} elsif ($method eq 'month') {
return +(localtime)[4] + 1;
}
}
package main;
use strict;
use warnings;
use feature 'say';
say( Foo->day );
say( Foo->troz );
__END__
Foo::day was called
25
Foo::troz was called
bad method troz
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
| |
For: |
|
Use: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.