我正在处理时间,需要将某些值输入到基于UTC和本地标准时间差异的等式中.因此,对于洛杉矶,@ ARGV输入将为"8",并且需要插入嵌套方程中的值将为"4",但脚本将不会选择适当的值.相反,它只选择过程中的第一个值,尽管ARGV值不是5.我究竟做错了什么?
$std_time = (@ARGV[0]);
if ($std_time = 5) {(std_time_pro = 7);}
elsif ($std_time = 6) {(std_time_pro = 6);}
elsif ($std_time = 7) {(std_time_pro = 5);}
elsif ($std_time = 8) {(std_time_pro = 4);}
elsif ($std_time = 9) {(std_time_pro = 3);}
elsif ($std_time = 10) {(std_time_pro = 2);}
$shft_number = (($std_time_pro * 3600) / 86400);
Run Code Online (Sandbox Code Playgroud)
使用==来测试数值相等,而不是赋值运算符=.
此外,我怀疑提醒始终包含use strict和use warnings每个Perl脚本的顶部.出于其中一些原因,请阅读:为什么要使用严格和警告?
最后,if我建议建立一个散列来关联你的两个值,而不是一个语句列表:
use strict;
use warnings;
my ($std_time) = @ARGV;
my %std_time2pro = map {$_ => 12 - $_} (5..10);
my $std_time_pro = $std_time2pro{$std_time} // die "Invalid value of std_time: $std_time";
Run Code Online (Sandbox Code Playgroud)