-print "# Hosts:\n";
-for my $h (sort keys %$machines) {
- my $m = $machines->{$h};
- ref $m eq 'HASH' or next;
- print "$h\n";
-}
+if ($groups) {
+ !@ARGV or die "bex mach --groups accepts no positional arguments.\n";
+ for my $h (sort keys %$machines) {
+ my $m = $machines->{$h};
+ ref $m eq 'ARRAY' or next;
+ print "$h = ", join(" ",
+ map {
+ my $x = $machines->{$_};
+ !defined($x) ? "$_?" :
+ ref $x eq 'HASH' ? $_ :
+ ref $x eq 'ARRAY' ? "\@$_" :
+ "$_???"
+ } @$m), "\n";
+ }
+} elsif (@ARGV) {
+ my @machines = BEX::Config::parse_machine_list(@ARGV);
+ for my $m (sort @machines) {
+ print "$m\n";
+ }
+} else {
+ for my $h (sort keys %$machines) {
+ my $m = $machines->{$h};
+ ref $m eq 'HASH' or next;
+ print "$h\n";
+ }