Perlでのシステム関数&サブルーチン呼び出しの書き方
同名(たとえば、time)のシステム関数とサブルーチンをいろいろな呼び出し方でテストをしてみました。
テストソース
print "1---", time, "\n"; print "2---", time(), "\n"; print "3---", &time(), "\n"; print "4---", &time, "\n"; #print "5---", timex, "\n"; print "6---", timex(), "\n"; print "7---", &timex(), "\n"; print "8---", &timex, "\n"; sub time { return "--ローカルtime--"; } sub timex { return "--ローカルtimex--"; }
実行結果
1---1190439953 2---1190439953 3-----ローカルtime-- 4-----ローカルtime-- 6-----ローカルtimex-- 7-----ローカルtimex-- 8-----ローカルtimex--
まとめ
- システム関数は、『&』付きは、NGです。
- システム関数は、裸のワード(Bareword)はOKですが、括弧付きの方が関数明示となる。
- サブルーチンは、『&』付きはサブルーチン明示になる。
- サブルーチンは、裸のワード(Bareword)はNGです。
よって、システム関数は括弧付きが良く、サブルーチンは『&』付きが良いと思います。