$ cat foo.pl #!/usr/bin/env perl use strict; use warnings; use Data::Dump qw(pp); my $t = ; my ($nV, $nE) = split /\s+/,$t; # read graph my %G; my ($src, $dst); while () { next if /^\s+$/; ($src, $dst) = split /\s+/; last if !$nE--; $G{$src}{$dst}=0; $G{$dst} = {} if ! exists $G{$dst}; } print pp(\%G),"\nStart: $src, End: $dst\n\n"; __DATA__ 5 6 1 2 2 3 2 4 4 5 1 3 3 5 1 5 $ perl foo.pl { 1 => { 2 => 0, 3 => 0 }, 2 => { 3 => 0, 4 => 0 }, 3 => { 5 => 0 }, 4 => { 5 => 0 }, 5 => {}, } Start: 1, End: 5