java中printf輸出格式 perl中foreach為什么輸出不了第一行?
perl中foreach為什么輸出不了第一行?這是因?yàn)閒oreach嘗試枚舉@line,pop在枚舉過程中修改@line,所以foreach本身會有問題。從可能的原因分析,foreach嘗試從行的開始
perl中foreach為什么輸出不了第一行?
這是因?yàn)閒oreach嘗試枚舉@line,pop在枚舉過程中修改@line,所以foreach本身會有問題。從可能的原因分析,foreach嘗試從行的開始遍歷到行的結(jié)束,遍歷過程結(jié)束時的元素將由您從列表中刪除。在其他編程語言中,迭代器提前結(jié)束。Shift沒有問題,因?yàn)楸闅v的方向與Shift刪除元素的方向完全相同。被移除的元素被遍歷。應(yīng)該避免foreach和任何修改列表的函數(shù)的組合,否則會出錯。正確的方法是使用while(@line)而不是foreach(@line)。如果使用foreach,則應(yīng)該使用foreach$line(reverse@lines){printf%sn“,$line}