perl - 为什么在没有引号的情况下,Perl 中的 IF 条件下无法解析数字

标签 perl datetime

我有一个脚本,它会根据 IF 条件下的 time 执行某些操作。所以基本上 IF 将寻找当前时间,即小时和分钟。

这是脚本:

use strict;
use warnings;

my $TIME = `date '+%H%M'`;
chomp $TIME;

print $TIME."\n";

if (( $TIME > 0100) && ($TIME < 0300)){
        print "1st IF\n";
} elsif (( $TIME > 0300) && ($TIME < 0500)){
        print "2nd IF\n";
} else {
        print "Default IF\n";
}

假设现在时间是 0130,它应该打印 1st IF。但它的打印 Default IF。 同样,当时间为 0430 时,它应该打印 2nd IF。但是它打印 Default IF

但是当我用双引号将时间值括起来时 "" 它起作用了。如下所示 -

if (( $TIME > "0100") && ($TIME < "0300")){

$TIME 是否解析为字符串?我在想 $TIME 会有数字而且不需要引号。

最佳答案

您可以在 perlnumber 中找到,以零开头的文字数字被解释为八进制数字。因此,0100640300 是 192。

当对字符串进行数值化时,前导零将被忽略。

另见 Time::Piece关于如何在 Perl 中处理时间而不需要花钱。

use Time::Piece;
my $time = localtime->strftime('%H%M');

关于perl - 为什么在没有引号的情况下,Perl 中的 IF 条件下无法解析数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63280861/

相关文章:

linux - 递归重命名目录名称

perl - 我怎样才能 Hook 到 Perl 的打印?

python - 如何将日期时间对象转换为毫秒

javascript - Angularjs 使用 ng-show 条件来比较两种不同的日期格式

c# - 我如何计算假期?

sql - 需要声明时间并希望 getdate() 仅返回日期并将两个结果连接起来

perl - 在 Perl/Moose 中,如何在父类中创建可从子类访问的静态变量?

perl - 如何优雅地调用名称保存在变量中的 Perl 子例程?

arrays - 搜索数组中连续元素的索引

python - 如何将当前日期时间转换为 13 位 Unix 时间戳?