in reply to Unique entries from an array

there may be several duplications...

Not enough information. Do you mean:

1 Duplicated names in the array? (eg dad_and_brittney.jpg occurs more than once?). In that case, pre-process your array to exclude such duplicates:

# Assume @all_pics to be your array my %seen; @all_pics = grep !$seen{$_}++, @all_pics;

2 You don't want to display a picture that has already been shown?

my $pic = splice @all_pics, rand @all_pics, 1;

3 You have duplicate pictures with different names? That's a whole 'nother problem...