my ( $x_opt, $y_opt, $z_opt ); my $status = GetOptions( x => \$x_opt, y => \$y_opt, z => \$z_opt, ); die $USAGE if !$status || !@ARGV || ( 1 < grep $_, $x_opt, $y_opt, $z_opt ) || ( $x_opt and @ARGV != 4 ) || ( $y_opt and @ARGV != 3 ) || ( $z_opt and @ARGV != 2 );