gpt4 book ai didi

perl - 无法通过包定位对象方法 "strftime"

转载 作者:行者123 更新时间:2023-12-05 08:24:15 28 4
gpt4 key购买 nike

我编写了一个 perl 脚本,我在其中调用一个子例程将字段插入到数据库表中。该子例程在除主 perl 文件 Test.pl 之外的另一个文件 Test.pm 中调用。在 Test.pm 中,我将以下字段插入到表中

my $date = localtime->strftime('%Y-%m-%d %H:%M:%S');
my $time = localtime->strftime('%H:%M:%S');

但是,这里我得到以下错误

Can't locate object method "strftime" via package 

这是什么错误,为什么会发生。如果我从 Test.pl 传递参数 $date$time,脚本运行正常,我该如何解决这个问题?

下面是子程序:

sub send_message
{
my $date = localtime->strftime('%Y-%m-%d %H:%M:%S');
my $time = localtime->strftime('%H:%M:%S');
print "Date : $date Time : $time";
my $sql1 = "Insert into testtable(time,date) values('$time','$date')";
my $sth1 = $dbh->prepare($sql1);
$sth1->execute
or die "SQL Error: $DBI::errstr\n";
return;
}

最佳答案

首先:这个错误意味着你的脚本想要调用方法strftime,它应该在一个特殊的包中定义。查看您的脚本,会发生以下情况:

  1. 您正在调用 localtime,它是一个方法并以字符串形式返回当前时间,例如“2013 年 6 月 20 日星期四 01:14:01”
  2. 您尝试使用 localtime 返回的名称调用包(模块)中定义的方法 strftime。那行不通。

strftimePOSIX 中定义并采用 >1 个参数:格式和时间。你可能想调用:

use POSIX;

my $date = POSIX::strftime('%Y-%m-%d %H:%M:%S', localtime);
my $time = POSIX::strftime('%H:%M:%S', localtime);

或者,因为你调用了这个方法两次:

use POSIX;

my @localtime = localtime;
my $date = POSIX::strftime('%Y-%m-%d %H:%M:%S', @localtime);
my $time = POSIX::strftime('%H:%M:%S', @localtime);

因为 localtime 返回一个数组,它应该是 strftime 的输入。

关于perl - 无法通过包定位对象方法 "strftime",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17202853/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com