The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/local/bin/perl

use blib;
use strict;
use warnings;

use AFS::BOS;

my ($server, $cellname, $instance, $bos, $ok);
my ($nargs, @instance);

die "Usage: $0 server instances | all | bos [cell]\n" if $#ARGV < 1;

$nargs    = $#ARGV;
$server   = shift;
$instance = shift if $nargs > 0;
$cellname = shift if $nargs > 1;

#warn ">$server< >$instance< >$cellname< \n";

if (defined $instance and $instance =~ / /) { @instance = split / /, $instance; }

if ($cellname) { $bos = AFS::BOS->new($server, 0, 0, $cellname); }
else           { $bos = AFS::BOS->new($server); }
$AFS::CODE and print "AFS::CODE = $AFS::CODE\n" and die;

if    ($instance eq 'all') { $ok = $bos->restart_all; }
elsif ($instance eq 'bos') { $ok = $bos->restart_bos; }
elsif (@instance)          { $ok = $bos->restart(\@instance); }
else                       { $ok = $bos->restart($instance); }
if ($AFS::CODE) { print "AFS::CODE = $AFS::CODE\n"; }
else            { print "OK = $ok \n"; }

$bos->DESTROY;