Thread Perl Option/Schalter in Switch-Case unterbringen
(33 answers)
Opened by M4RC3L at 2016-03-14 10:28
Ich denke schon. Es ließe sich direkt im Code wohl sauberer darstellen, was gemacht werden soll.
Man könnte beispielsweise eine Option "--as-cron" benutzen und darüber vermerken, ob das Skript via Cron ausgeführt wird oder nicht. Ich nutze gerne Getopt::Long für sowas und nutze beispielsweise zwei Hashes, einen für Flags für Schalter ja/nein oder an/aus und einen für Optionen mit Werten, die der Benutzer festlegen oder überschreiben darf. Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 # Standard, sollte fast immer eingebunden werden use strict; use warnings; # Modul zum Optionen behandeln use Getopt::Long; # Hash, um Flags (ein/aus, ja/nein) zu verwalten my %FLAG = ( RUNS_AS_CRON => 0, ); # Hash, um Optionen mit Werten zu verwalten; z.B. --dummy "string" wird zu $OPT{dummy} = 'string'; my %OPT = ( dummy => '', ); ### MAIN # Verarbeite die gegebenen Optionen von der Kommandozeile; alles was übrig bleibt, bleibt in @ARGV GetOptions( 'as-cron' => \$FLAG{RUNS_AS_CRON}, 'dummy=s' => \$OPT{dummy}, ) or exit 255; # Wenn das Flag "RUNS_AS_CRON" gesetzt wurde, dann tu etwas passendes; z.B. eine While-Schleife umgehen, weil nicht interaktiv gearbeitet wird if ( $FLAG{RUNS_AS_CRON} ) { # runs as cron job } # Wenn nicht, läuft das Programm wohl normal; wahrscheinlich interaktiv else { # runs normally? print "Dummy is: >", $OPT{dummy}, "<\n"; } Wenn das Skript als Cronjob eingetragen wird, gibt man eben die Option --as-cron an, um das dem Skript mitzuteilen... edit: Comments to Code added Last edited: 2016-03-17 11:14:41 +0100 (CET) meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen! |