AUTOLOAD

Fooパッケージにないbar()メソッドを呼ぶと、代わりにAUTOLOAD()が呼ばれる。AUTOLOAD()ではメソッド名は$AUTOLOADで参照できる。

 #!/usr/bin/env perl
 
 use strict;
 use warnings;
 use 5.012;
 
 package Foo;
 
 use Data::Dumper ;
 
 sub new {
     my $class = shift;
     bless {@_}, $class;
 }
 
 sub foo {
     my $self = shift;
     say "foo()";
 }
 
 sub AUTOLOAD {
     my (@arg) = @_;
     our $AUTOLOAD;
     say 'METHOD: ' . $AUTOLOAD;
     say 'ARGS: ' . Dumper \@arg;
 }
 
 package main;
 
 my $f = Foo->new;
 
 $f->foo();
 
 $f->baz(1,2,3);

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS