如何将gmtime生成的日期字符串保存为可提取的变量?
Perl 日期数组元素提取问题解决
你写的代码里,虽然声明了全局的@dates数组,但在for循环内部又重新用my @dates = gmtime ($time);声明了同名数组,这会覆盖外部的数组,导致全局的@dates始终是空的,自然没法通过$dates[0]提取日期字符串。另外,你当前只是直接打印strftime的结果,没有把格式化后的日期字符串存入数组。
以下是修正后的代码:
#!/usr/bin/perl use strict; use warnings; use POSIX qw{strftime}; my @dates; my $time = time(); my $seconds_per_day = 24*60*60; # 生成从明日开始的10天日期,存入@dates数组 for (1..10){ $time += $seconds_per_day; my @time_parts = gmtime($time); # 将格式化后的日期字符串push到数组中 push @dates, strftime("%a %d %b %Y", @time_parts); } # 现在可以正常提取数组元素了 print "第一天的日期:$dates[0]\n"; # 打印所有日期验证 print join("\n", @dates), "\n";
修改说明
- 移除循环内部的
my @dates,避免覆盖全局数组 - 将
strftime生成的日期字符串通过push存入全局的@dates - 重命名
$seconds为$seconds_per_day,提升代码可读性 - 添加了提取
$dates[0]的示例,验证数组可用
内容的提问来源于stack exchange,提问作者Zilore Mumba
相关产品推荐
相关产品推荐

