personA,personB,10
personB,personA,190
personA,personC,23
personA,personD,43
personE,personF,10
####
#!/usr/bin/env perl
use warnings;
use strict;
use Text::CSV;
use Graph;
my $filename = 'input.csv';
my $g = Graph->new(directed=>1);
open my $fh, '<', $filename or die "$filename: $!";
my $csv = Text::CSV->new({ binary=>1, auto_diag=>2, eol=>$/ });
while ( my $row = $csv->getline($fh) ) {
my ($author1, $author2, $interactions) = @$row;
$g->set_edge_attribute( $author1, $author2, # auto-creates edge
'interactions', $interactions );
}
$csv->eof or $csv->error_diag;
close $fh;
for my $e ($g->edges) {
my ($author1, $author2) = @$e;
next if $g->has_edge($author2, $author1);
my $interactions = $g->get_edge_attribute( $author1, $author2,
'interactions' );
$csv->print(select, [ $author1, $author2, $interactions ]);
}
####
personE,personF,10
personA,personD,43
personA,personC,23