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引数にパッケージが含まれる