并非所有标准 Perl 命令都列在标准 Perl 命令列表中。system
这对初学者来说是一个很大的困惑,也是您最终看到初学者使用大量命令来完成可以直接在 Perl 中完成的事情的主要原因。
如果您包含该命令的Perl 模块,则可以使用许多 Perl 命令。例如,您想将文件从一个地方复制到另一个地方,但没有将 Perlcopy
命令列为标准功能。许多人最终会这样做:
system ("cp $my_file $new_location");
但是,有一个标准的 Perl 模块File::Copy
,其中包含缺少的复制命令:
use File::Copy;
copy ($my_file, $new_location);
该File::Copy
模块包含在 Perl 中,但您必须了解模块以及如何使用它们。不幸的是,尽管它们是 Perl 的主要部分,但它们根本没有包含在许多 Perl 初学者书籍中。
我假设您的困惑来自您在 Perl 中寻找某些命令但没有找到它的事实。然而,Time::Piece模块是自 Perl 5.10 以来用于日期操作的标准 Perl 模块。不幸的是,它是一个面向对象的模块,对于不熟悉面向对象 Perl 的用户来说,它的语法可能会有点奇怪。幸运的是,它使用起来真的非常简单。
在面向对象编程中,您创建一个包含数据的对象。对象本身不容易显示,但包含数据的所有特征,并且可以使用各种方法(基本上是子例程)来获取有关该对象的信息。
您需要做的第一件事是创建日期的时间对象:
my $time_obj = Time::Piece->strptime("20130227", "%Y%m%d");
现在,$time_obj
代表您的日期。代表您的20130227
日期字符串。%Y%m%d
表示您的字符串 ( YYYYMMDD
)的格式。不幸的是,Time::Piece
文档没有告诉您格式是如何工作的,但格式字符记录在Unix strftime 手册页中。
一旦你有了你的时间对象,你可以用各种方法(又名子程序)来查询它:
if ( $time_obj->day_of_week == 1 ) {
print "This is a Monday\n";
}
阅读文档并尝试一下。