#!/usr/bin/perl
#-------------------------------------------------------------------------------
# getoptlong.pl                                  (C) 2015 T.Birnthaler OSTC GmbH
#-------------------------------------------------------------------------------
use strict;
use warnings;

#use Getopt::Std;                   # Ueberfluessig: Getopt::Long kann deutlich mehr
#use Getopt::Long ( :config no_ignore_case );   # GROSS/kleinschreibung beachten
#use Getopt::Long;
use Getopt::Long;   # GROSS/kleinschreibung beachten
Getopt::Long::Configure( "no_ignore_case" );   # GROSS/kleinschreibung beachten
use File::Basename qw/ basename /;

# Options-Variablen
my $debug   = 0;                 # Flag
my $file    = "/tmp/xxx.txt";    # String
my $help    = 0;                 # Flag
my $test    = 0;                 # Flag
my $tttt    = 0;                 # Flag
my $verb    = 0;                 # Flag
my $zone    = 0;                 # Zahl

# DEBUG: Argumente vor Options-Erkennung ausgeben
print "Argumente: @ARGV\n" if (@ARGV);

# Optionen einlesen
GetOptions("debug"    => \$debug, # Flag
           "file=s"   => \$file,  # String
           "help"     => \$help,  # Flag
           "rate=f"   => \$rate,  # Zahl (Fliesskomma)
           "test"     => \$test,  # Flag
           "tttt"     => \$tttt,  # Flag
           "verbose"  => \$verb,  # Flag
           "zone=n"   => \$zone,  # Zahl (Ganzzahl)
) or &Usage("wrong option");

# Hilfe ausgeben?
&Usage("") if ($help);

# DEBUG: Optionen ausgeben (nur zum Debugging)
print "Option --debug:   $debug\n";
print "Option --file:    $file\n";
print "Option --rate:    $rate\n";
print "Option --test:    $test\n";
print "Option --tttt:    $tttt\n";
print "Option --verbose: $verb\n";
print "Option --zone:    $zone\n";

# DEBUG: Argumente nach Options-Erkennung ausgeben
print "Argumente: @ARGV\n" if (@ARGV);

#-------------------------------------------------------------------------------
# Usage-Meldung + Abbruch
#-------------------------------------------------------------------------------
sub Usage
{
	my ($msg) = @_;

	select STDERR;
	print "ERROR: $msg\n" if ($msg);
	print "USAGE: ", basename($0), "\n";
	print "       Macht dies und das...\n";
	print "       --debug       Debugging-Meldungen\n";
	print "       --file FILE   Datei angeben\n";
	print "       --help        Hilfe (diese Usage-Meldung)\n";
	print "       --rate FAKTOR Rate\n";
	print "       --test        Test\n";
	print "       --tttt        Tttt\n";
	print "       --verbose     Ausfuehrliche Meldungen\n";
	print "       --zone ZAHL   Zonen-Nummer\n";
	exit(1);
}
