1#!/usr/bin/perl 2 3# Written by Marc Espie, 2001. 4# Public domain 5 6@cycle = (); 7 8sub show_cycle() 9{ 10 return if @cycle == 0; 11 $min = 'zzzzz'; 12 for ($i = 0; $i < @cycle; $i++) { 13 if ($cycle[$i] lt $min) { 14 $minindex = $i; 15 $min = $cycle[$i]; 16 } 17 } 18 @ordered=(); 19 for ($i = $minindex; $i <@cycle; $i++) { 20 push(@ordered, $cycle[$i]); 21 } 22 for ($i = 0; $i < $minindex; $i++) { 23 push(@ordered, $cycle[$i]); 24 } 25 print join(',', @ordered), "\n"; 26} 27 28while (<>) { 29 chomp; 30 if ($_ eq 'tsort: cycle in data') { 31 show_cycle(); 32 @cycle = (); 33 } else { 34 m/^tsort:\s+/ and push(@cycle, $'); 35 } 36} 37show_cycle(); 38