为什么我不能在Perl中实例化POSIX包?

时间:2013-06-19 05:50:52

标签: perl oop posix

我不喜欢这里,我只是在尝试。

所以我试过

#! usr/bin/perl
use warnings;
use strict;
use POSIX;

我可以这样做:

my $point = bless {}, 'POSIX';
print $point->strftime("%A, %B %d, %Y", @time); 

试过那个错误。

1 个答案:

答案 0 :(得分:6)

这不起作用,因为POSIX包中的函数不是设计为对象方法。

当您使用->运算符调用方法时,Perl会在调用者的继承层次结构中找到该方法,然后执行该方法,并将调用者作为第一个参数传递。所以

$point->strftime("%A, %B %d, %Y", @time);

相当于:

POSIX::strftime( $point, "%A, %B %d, %Y", @time );

strftime函数不期望在开头有额外的参数,因此它会因标准的XS使用错误而死亡。