my %edgeHash; my %countHash; while(){ # Reading an edge list if(/^\s*([0-9]+)\s+([0-9]+)\S*$/){ my $a = "$1"; my $b = "$2"; my $good = "1"; # Eliminate loops foreach my $item (keys %edgeHash){ foreach my $item2(@{$edgeHash{$item}}){ if($item2 eq $b){ $good = "0"; } } } # Add items to the edge hash if($good eq "1"){ if(exists($edgeHash{$a})){ push @{$edgeHash{$a}}, $b; }else{ push @{$edgeHash{$a}}, $b; } } } }