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

use v5.10.0;
use blib;
use strict;
use warnings;

use AFS::VOS;
use Scalar::Util qw(looks_like_number);

my ($vos, $volid, $server, $part, $volume, $maxquota, $vid, $rovid);

die "Usage: $0 server partition volume [max_quota [volid rovolid]]\n" if $#ARGV < 2;

$server   = shift;
$part     = shift;
$volume   = shift;
$maxquota = shift;
$vid      = shift // 0;
$rovid    = shift // 0;

if (defined $maxquota and !looks_like_number($maxquota)) { warn "$0: MAXQUOTA is not an INTEGER ...\n"; }
else                                                     { $maxquota = int($maxquota); }
if (defined $vid      and !looks_like_number($vid))      { warn "$0: VID is not an INTEGER ...\n"; }
else                                                     { $vid = int($vid); }
if (defined $rovid    and !looks_like_number($rovid))    { warn "$0: ROVID is not an INTEGER ...\n"; }
else                                                     { $rovid = int($rovid); }

$vos = AFS::VOS->new;
$AFS::CODE and print "AFS::CODE = $AFS::CODE\n" and die;

if ($maxquota) { $volid = $vos->create($server, $part, $volume, $maxquota, $vid, $rovid); }
else           { $volid = $vos->create($server, $part, $volume); }
if ($AFS::CODE) { print "AFS::CODE = $AFS::CODE\n"; }
else            { printf "Volume %u created on partition /vicep%s of %s\n", $volid, $part, $server; }