#!/usr/bin/perl use warnings; use strict; my $base = defined($ARGV[0]) ? $ARGV[0] : "ALL!"; if (defined($ARGV[0]) and $ARGV[0] eq "-h") { usage(); exit; } sub usage { print qq($/Usage:$/$/); print qq($0 [base] - "base is optional and defaults to sys0$/$/); print qq(This script builds a tree of devices$/$/); } my %devices = map { chomp; s/,$/,_/; split /,/,$_ } (`lsdev -F name,parent`); sub children { my $parent = shift; my @lsdev; foreach (keys %devices) { push @lsdev, $_ if $devices{$_} eq $parent; } return @lsdev; } sub graph { my $step = shift; my @lista = @_; foreach my $i (@lista) { print "|", " " x $step,"|-- ",$i,$/; graph($step+3,children($i)); } } if ($base eq "ALL!") { graph(0,children("_")); } else { graph(0,$base); }