想为一些外来的perl模块写一个简单的包装器.简化示例:
use 5.014; use warnings; #foreign package package Some { sub func { my($x,$y) = @_; return $x.$y; } }; #my own packages package My { #use Some (); sub func { Some::func(@_); } } package main { #use My; say My::func("res","ult"); }
这样可以正常打印结果.
但是现在我遇到了一个使用原型的模块,例如以上看起来像:
package Some { sub func($$) { # <-- prototype check my($x,$y) = @_; return $x.$y; } };
在尝试使用My wrapper包时,它说:
Not enough arguments for Some::func at ppp line 16,near "@_)"
可能在原型检查中“作弊”,或者我必须编写我的包装器吗?
sub func { Some::func($_[0],$_[1]); }
甚至
sub func($$) { Some::func($_[0],$_[1]); }