#!/usr/bin/perl $filname = "concorde" . time; $inputfile = $ARGV[0]; # raw distance matrix open(INFILE, $inputfile) or die "Can't open inputfile: $!"; $nufile = ">/tmp/" . $filname; open(OUTFILE,$nufile); # write data to OUTFILE $tempfile = "/tmp/contemp" . time; $tfile = ">" . $tempfile; open(TEMPFILE,$tfile); while () { s/\n/\ /; s/\(//g; s/\)/\n/g; s/\ \ /\ /g; s/\ \ /\ /g; s/\n\ /\n/g; print TEMPFILE "$_"; } close INFILE; close TEMPFILE; $rfile = $tempfile; open(RFILE,$rfile) or die "Can't open rfile: $!"; while () { if ($. == 1) { @sparray = split(); $splen = @sparray; } } close RFILE; print OUTFILE ("NAME : dktest COMMENT : drew's cities TYPE : TSP DIMENSION : "); print OUTFILE ($splen,"\n"); print OUTFILE ("EDGE_WEIGHT_TYPE : EXPLICIT EDGE_WEIGHT_FORMAT : FULL_MATRIX EDGE_WEIGHT_SECTION \n"); open(RFILE,$rfile) or die "Can't open rfile: $!"; while () { print OUTFILE "$_"; } # close INFILE; close RFILE; close OUTFILE; $do_concorde = `concorde /tmp/$filname`; $resultfile = $filname . ".sol"; open(RESULTS,$resultfile); while () { if ($. > 1) {print;} } close RESULTS; $cleanup = `rm -f *$filname*; rm -f /tmp/$filname; rm $tempfile`;