in reply to Need to create a blender to mix up lines from a file

If the number of entries for each domain is the same then the code below will interleave them for you

use warnings; use strict; my %domains; while (my $line = <DATA>) { chomp $line; my ($name, $domain) = split /@/, $line; $domains{$domain} = [] if ! defined $domains{$domain}; push @{$domains{$domain}}, $line; } while (%domains) { for my $domain (keys %domains) { print ((shift @{$domains{$domain}}) . "\n"); delete $domains{$domain} if ! @{$domains{$domain}}; } } __DATA__ ads@domain.com ads@domain.com ads@domain1.com ads@domain1.com ads@domain2.com ads@domain2.com

Prints:

ads@domain.com ads@domain1.com ads@domain2.com ads@domain.com ads@domain1.com ads@domain2.com

Perl is Huffman encoded by design.