perlのpackage越しのサブルーチン呼び出し時の引数
perlでpackage越しのサブルーチンを呼ぶ際に"::"と"->"だと引数が違う気がしていたけど、あまりよく考えていなかった。というわけでこんなスクリプトを書いた。
$ cat package_args.pl #!/usr/bin/env perl package Foo; use Data::Dumper; sub bar { print Dumper(\@_); } package main; print "Foo::bar\n"; Foo::bar; print "\n"; print "Foo->bar\n"; Foo->bar; 1;
さて、実行してみる。
$ perl package_args.pl Foo::bar $VAR1 = []; Foo->bar $VAR1 = [ 'Foo' ];
つまり、
- Foo::bar() だと引数にパッケージが含まれない
- Foo->bar()だと第1引数にパッケージが含まれる