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
|
|---|