java中printf输出格式 perl中foreach为什么输出不了第一行?

perl中foreach为什么输出不了第一行?这是因为foreach尝试枚举@line,pop在枚举过程中修改@line,所以foreach本身会有问题。从可能的原因分析,foreach尝试从行的开始

perl中foreach为什么输出不了第一行?

这是因为foreach尝试枚举@line,pop在枚举过程中修改@line,所以foreach本身会有问题。从可能的原因分析,foreach尝试从行的开始遍历到行的结束,遍历过程结束时的元素将由您从列表中删除。在其他编程语言中,迭代器提前结束。Shift没有问题,因为遍历的方向与Shift删除元素的方向完全相同。被移除的元素被遍历。应该避免foreach和任何修改列表的函数的组合,否则会出错。正确的方法是使用while(@line)而不是foreach(@line)。如果使用foreach,则应该使用foreach$line(reverse@lines){printf%sn“,$line}