Посмотрите на это: http://www.perlmonks.org/?node_id=17890
(взято оттуда:)
Perl реализует списки с массивом и смещением первого / последнего элемента. Массив выделяется больше, чем необходимо, смещения, изначально указывающие на середину массива, так что есть место для роста в обоих направлениях (unshifts и push / вставки), прежде чем потребуется перераспределение базового массива. Следствием этой реализации является то, что все операторы примитивного списка perl (вставка, выборка, определение размера массива, push, pop, shift, unshift и т. Д.) Выполняются за время O (1).