YanoRyuichi.com/
Wiki
Blog
GitHub
Sandbox
開始行:
* AUTOLOAD [#e8a86de3]
Fooパッケージにないbaz()メソッドを呼ぶと、代わりにAUTOLOA...
#!/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);
↑を実行すると、結果は↓。
foo()
METHOD: Foo::baz
ARGS: $VAR1 = [
bless( {}, 'Foo' ),
1,
2,
3
];
METHOD: Foo::DESTROY
ARGS: $VAR1 = [
bless( {}, 'Foo' )
];
終了行:
* AUTOLOAD [#e8a86de3]
Fooパッケージにないbaz()メソッドを呼ぶと、代わりにAUTOLOA...
#!/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);
↑を実行すると、結果は↓。
foo()
METHOD: Foo::baz
ARGS: $VAR1 = [
bless( {}, 'Foo' ),
1,
2,
3
];
METHOD: Foo::DESTROY
ARGS: $VAR1 = [
bless( {}, 'Foo' )
];
ページ名: