我有一个脚本,它会根据 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 中找到,以零开头的文字数字被解释为八进制数字。因此,0100
是 64
而 0300
是 192。
当对字符串进行数值化时,前导零将被忽略。
另见 Time::Piece关于如何在 Perl 中处理时间而不需要花钱。
use Time::Piece;
my $time = localtime->strftime('%H%M');
关于perl - 为什么在没有引号的情况下,Perl 中的 IF 条件下无法解析数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63280861/