0

我在这里什么都做不了,我只是在做实验。

所以我尝试了

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

我可以做类似的事情:

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

试过那个它给出错误。

4

1 回答 1

6

那是行不通的,因为POSIX包中的函数并非设计为作为对象方法调用。

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

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

相当于:

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

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

于 2013-06-19T06:10:58.903 回答