我不喜欢这里的东西,我只是在试验.
所以我试过了
#! usr/bin/perl
use warnings;
use strict;
use POSIX;
Run Code Online (Sandbox Code Playgroud)
我可以这样做:
my $point = bless {}, 'POSIX';
print $point->strftime("%A, %B %d, %Y", @time);
Run Code Online (Sandbox Code Playgroud)
试过那个它给出了错误.
这不起作用,因为POSIX包中的函数不是设计为对象方法.
当您使用->运算符调用方法时,Perl会在调用者的继承层次结构中找到该方法,然后执行该方法,将调用者作为第一个参数传递.所以
$point->strftime("%A, %B %d, %Y", @time);
Run Code Online (Sandbox Code Playgroud)
相当于:
POSIX::strftime( $point, "%A, %B %d, %Y", @time );
Run Code Online (Sandbox Code Playgroud)
该strftime函数不期望在开头有额外的参数,因此它会因标准的XS使用错误而死亡.