我正在阅读一个我必须按小时、按分钟或按秒计算的有序文件。如果要求,我必须打印 0 次出现的时间(标准化输出)或跳过它们(非标准化输出)。输出显然必须是有序的。
我首先想到的是使用数组。当输出未标准化时,我大致相当于:
@array[10] = 100;
@array[10000] = 10000;
并打印结果:
foreach (@array) {
print if defined;
}
有没有办法将迭代减少到仅在数组中定义的元素?在前面的示例中,这意味着只进行两次迭代,而不是使用$#array
暗示的 10000 次。然后我还需要一种方法来知道循环中的当前数组索引。这样的事情存在吗?
我越来越多地考虑使用哈希来代替。使用哈希解决了我的问题,也消除了将 hh:mm:ss 时间转换为索引的需要,反之亦然。
或者你有更好的解决方案来解决这个简单的问题吗?