#!/usr/bin/perl use strict; use warnings 'all'; my (%data, @data, $data); while () { chomp; push @{$data {$_}} => $_; } @data = @data {sort {$a <=> $b} keys %data}; while (@data) { $data = shift @data; print pop @$data, "\n"; push @data => $data if @$data; } __DATA__ 2 2 2 3 3 3 4 4 4