http://qs321.pair.com?node_id=388321


in reply to Finding missing numbers in a list

You can do it with the .. operator:

@a = (41888, 41889, 41890, 41892, 41895); @m = map $a[$_-1]+1..$a[$_]-1, 1..@a-1; print join(" ", @m), $/;

Replies are listed 'Best First'.
Re^2: Finding missing numbers in a list
by Aristotle (Chancellor) on Sep 03, 2004 at 16:01 UTC

    It isn't the easiest to understand, but that's very nice outside the box thinking!

    Update: minor niggles: use $#a since that's what you mean — and please, please, use better variable names.

    my @list = ( 41888, 41889, 41890, 41892, 41895 ); my @missing = map { ( $list[ $_ - 1 ] + 1 ) .. ( $list[ $_ ] - 1 ) } 1 + .. $#list;

    Makeshifts last the longest.

        I'm not convinced that @list is much of an improvement over @a as a name for an array :-)

        Thats a terrible unconviction :P

        @list is much times better than @array ... @a for short...

        because the question talks about a list of numbers, the @list ... and the @ tells us its array

        @numbers