#!/usr/bin/env perl use strict; use warnings; my $COUNT = $ARGV[0]; my %seen; my @data; unshift @data, split while ; @data = grep !$seen{$_}++, @data; print "@data[0 .. $COUNT - 1]\n"; __DATA__ 1 1 2 2 3 3 4 5 6 7 8 5 6 6 7 8 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 17 18 19 20 21 22 23 24 #### $ ./pm_11109149_reverse_file_extract_with_conds.pl 24 21 22 23 24 17 18 19 20 13 14 15 16 9 10 11 12 5 6 7 8 1 2 3 4 $ ./pm_11109149_reverse_file_extract_with_conds.pl 12 21 22 23 24 17 18 19 20 13 14 15 16 $ ./pm_11109149_reverse_file_extract_with_conds.pl 7 21 22 23 24 17 18 19