my @releases = ( { name => 'Runtime RPM', desc => 'Includes viewer and Python distiller', versions => [{ version => $stable, files => [ "foo-$stable-1.i386.rpm"] }] # versions }, #name { name => 'Source RPM', desc => 'Includes viewer and Python distiller', versions => [{ version => $unstable, files => [ "foo-$stable-1.src.rpm"] }] # versions }, # name { name => 'Viewer in English', desc => '', versions => [{ version => $unstable, files => [ "foo-$unstable.torrent", "foo-$unstable.zip", "foo-$unstable.tar.bz2"] }] # versions }, # name ); foreach my $release (@releases) { my $versions = $release->{'versions'}; foreach my $version (@$versions) { my $files = $version->{'files'}; my $mirror = $mirrors[rand @mirrors]; foreach my $file (@$files) { print "$release->{'desc'}\n\t"; print "$version->{'version'}\n\t"; print "$file\n\t"; print "Mirror: $mirror/$file\n\n"; } } }