Einträge über perl

Fish shell

Vor einiger Zeit bin ich von der Bourne-again Shell (bash) zu fish gewechselt. Fish ist eine sehr benutzerfreundliche Shell, die mit einigen wirklich nützlichen Features aufwartet. Die Kommandozeile ist farbig. Falsch eingegebene/nicht existente Befehle erscheinen rot, korrekte Befehle blau. Standardmäßig erfolgt Auto-Vervollständigung, usw. Weitere Features sind auf der Webseite beschrieben.

Weiterlesen…

Neue Webseite online

TADAA! Mein Blog ist wieder online! Neus Backbone und neues Layout. Alles garantiert mit viel Liebe handgemacht. Eine ganze Menge wird noch nicht funktionieren oder funktioniert nur rudimentär. Allerdings wollte ich die Artikel des alten Blogs wieder zugänglich machen.

Weiterlesen…

Perl: Datums- und Zeiteingabe überprüfen

Auf dieser Seite habe ich eine kompakte Perl-Routine gefunden, die überprüft, ob ein eingegebenes Datum tatsächlich existiert. Beispiele: Ein "2012-08-17" wirft eine 1 (gültiges Datum) zurück, ein "2012-02-31" eine 0 (kein gültiges Datum, da der Februar maximal 29 Tage hat). Dabei berücksichtigt die Routine sogar Schaltjahre.

Für meine Anwendung müßte ich die Routine um die Überprüfung einer Zeitangabe erweitern. Der Code von obiger Seite sieht dann geringfügig erweitert (siehe gelbe Markierungen) so aus:

# Check if date time input is valid. If valid return 1, else return 0
# Adapted and expanded to cover time from:
# http://www.regular-expressions.info/dates.html
sub valid_date_time
{
my $input = shift;

if ($input =~ m!^((?:19|20)\d\d)[- /.](0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01]) \s+([01][0-9]|2[0-3])[/:.]([0-5][0-9])[/:.]([0-5][0-9]) $!)
{
# At this point, $1 holds the year, $2 the month and $3 the day,
# $4 the hours, $5 the minutes and $6 the seconds of the date/time entered
if ($3 == 31 and ($2 == 4 or $2 == 6 or $2 == 9 or $2 == 11))
{
return 0; # 31st of a month with 30 days
} elsif ($3 >= 30 and $2 == 2)
{
return 0; # February 30th or 31st
} elsif ($2 == 2 and $3 == 29 and not ($1 % 4 == 0 and ($1 % 100 != 0 or $1 % 400 == 0)))
{
return 0; # February 29th outside a leap year
} else
{
return 1; # Valid date/time
}
} else
{
return 0; # No valid date/time
}
}

Eier über Häuser werfen

Bei mir im Kollegenkreis hat jemand behauptet, es müsse doch ganz einfach sein, ein Ei über unser Dienstgebäude zu schmeißen. Das Thema ist jetzt schon seit Wochen Gesprächsthema in unseren Kaffeerunden. Doch der mutige Kollege ist, was das Thema anbetrifft, ziemlich leise geworden. Immerhin ist das Gebäude etwa 15 m hoch und 20 m tief ... Die Wette ist auch noch nicht eingelöst. Die Wette wurde endlich am 10.06.2009 eingelöst: Das Ei ist knapp oberhalb des zweiten Stockwerkes an der Fassade des vierstöckigen Hauses zerschellt (siehe Nachtrag unten).

Weiterlesen…