Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在perl中同时使用Time::Local和Time::localtime_Perl_Scripting - Fatal编程技术网

如何在perl中同时使用Time::Local和Time::localtime

如何在perl中同时使用Time::Local和Time::localtime,perl,scripting,Perl,Scripting,我的Perl安装中没有任何高级日期或时间实用程序。我只有Time::Local,Time::gmtime,Time::localtime和Time::tm 使用时间::本地; #使用时间::localtime; #$datestring=localtime('2018/07/17-21:18:15','%Y/%m/%d-%H:%m:%S'); my$str='2018/07/17-21:18:15'; 我的($date,$time)=拆分/-/,$str; 我的($year,$mon,$day)

我的Perl安装中没有任何高级日期或时间实用程序。我只有
Time::Local
Time::gmtime
Time::localtime
Time::tm

使用时间::本地;
#使用时间::localtime;
#$datestring=localtime('2018/07/17-21:18:15','%Y/%m/%d-%H:%m:%S');
my$str='2018/07/17-21:18:15';
我的($date,$time)=拆分/-/,$str;
我的($year,$mon,$day)=拆分/\/,$date;
我的($hour,$min,$sec)=拆分/:/,$time;
--$mon;
my$time=timelocal($sec、$min、$hour、$day、$mon、$year);
my$time2=本地时间;
my$time3=本地时间;
打印“时间为$time、$time2、$time3\n”;
执行上述操作后,我得到

时间是1531880295,周一至七月23日
2018年7月23日星期一10:50:54
在取消对第二行的注释后,我得到以下内容(带有'tm (结构)

时间是1531880295,时间::tm=数组(0x40036a40),
时间::tm=数组(0x40036ab8)
我想使用这两种功能,并像这样使用它们

时间是1531880295,2018年7月23日星期一10:50:54,
时间::tm=数组(0x40036ab8)

当您试图了解Perl模块如何工作时,阅读文档总是一个好主意。您正在使用的两个模块的文档位于和。Time::localtime的文档包括以下行:

函数提供了一种获取原始CORE::localtime()函数的标量意义的方法

因此,您可以通过将代码更改为:

my $time = timelocal($sec, $min, $hour, $day, $mon, $year);
my $time2 = ctime;
my $time3 = localtime;
print "time is $time, $time2, $time3\n";

但是,正如simbabque在评论中所说,这似乎是一件非常奇怪的事情,如果您解释了您试图实现的目标,我们几乎肯定可以向您展示一种更好的方法。

您正在运行哪个版本的Perl?请运行
perl-v
并告诉我们。通常,Perl保存模块的目录不止一个。检查是否安装了某些东西(以及安装的版本)的最佳方法是运行
perl-MTime::Piece\999
(带有反斜杠
\
和一个空格)。它会告诉你你有什么版本或者说你没有。另外,请告诉我们你实际上在做什么。你为什么要把它们一起使用?你想实现什么?我使用的是5.8.2版本。我一起使用的原因是我没有任何新的时间模块(或)日期模块,我想使用time::Piece,但不能,因为我没有它。我正在尝试将字符串转换为时间(我也没有POSIX::qw)。最后,在没有其他选项的情况下,我必须使用timelocal函数(Time::Local),我还需要tm结构将格式化的输出打印到文件中(Time::Local)。我需要localtime来获取函数所需的时间。我放置开始和结束,然后计算时间。没有POSIX::qw。如果您使用POSIX qw(foo-bar),这意味着它将从POSIX模块导入函数
foo
bar
。Perl 5.8.2中包含了POSIX。如前一篇博文所述,我之所以在一起使用,是因为我没有任何新的时间模块(或日期模块),我想使用time::Piece,但不能,因为我没有它。我正在尝试将字符串转换为时间(我也没有POSIX::qw)。最后,在没有其他选项的情况下,我必须使用timelocal函数(Time::Local),我还需要tm结构将格式化的输出打印到文件中(Time::Local)。我需要localtime来获取函数所需的时间。我放置了开始和结束,然后计算时间。如果没有POSIX,那么您的Perl安装就彻底崩溃了,在修复之前,您应该拒绝使用它!我会让相关人员知道,我也没有升级的权利,谢谢