#!/usr/bin/perl use warnings; use strict; use Graph; my @links = (qw( A C C E D C L G J K O P I M L K )); my $g = 'Graph::Undirected'->new; $g->add_edge(splice @links, 0, 2) while @links; print "@$_\n" for $g->connected_components;