#!/usr/bin/perluse strict;
use Time::Local;
my( $from, $until, $search );
# einlesen und umwandeln "von-Datum"
do{
print "from (dd.mm.yyyy): ";
$from = <STDIN>;
chomp( $from );
}while( $from !~ /\d{2}\.\d{2}\.\d{4}/ );
$from = seconds_since_start_of_epoch( $from );
# einlesen und umwandeln "bis-Datum"
do{
print "until (dd.mm.yyyy): ";
$until = <STDIN>;
chomp( $until );
}while( $until !~ /\d{2}\.\d{2}\.\d{4}/ );
$until = seconds_since_start_of_epoch( $until );
# einlesen des Suchbegriffes
do{
print "Search: ";
$search = <STDIN>;
chomp( $search );
}while( $search eq "" );
# einlesen des Verzeichnisinhaltes
opendir(DIR,".");
my @content = readdir(DIR);
closedir(DIR);
foreach my $file ( @content ){
# alles ignorieren, was keine Datei ist
next if( ! -f $file );
# hole Datum der letzten Modifikation der Datei
(my $mtime = (stat($file))[9]) || die "$file: stat error";
localtime $mtime, "\n";
# oeffne Dateien zum lesen, die im vorgegebenen Zeitraum
# angelegt/veraendert wurden
if( $mtime >= $from && $mtime <= $until ){
if( ! open(IN,"<$file" ) ){
print "can't open $file\n";
} else {
print "scanning file $file\n";
# suche nach dem Suchbegriff, bis Suchbegriff gefunden
# oder EOF
while ( <IN> ){
if( $_ =~ /$search/i ){
print "found \"$search\" in file $file\n";
last;
}
}
}
}
}
#---------------------------------------------
# seconds_since_start_of_epoch($)
#
# berechnet die Sekunden des uebergebenen
# Datums seit Beginn der Epoche (01.01.1970)
# Uhrzeit ist fest auf 00:00:00 Uhr gesetzt.
#
# Das Grundkonstruckt der Funktion ist von
# Martin Fabiani (www.linux-services.org/perl)
#---------------------------------------------
sub seconds_since_start_of_epoch{
my $real_date = shift;
$real_date =~ /(\d{1,2})\.(\d{1,2})\.(\d{4})/;
my @date = (0,0,0,$1,$2,$3); # hh,mm,ss,dd,mm,yyyy
$date[4]--; # januar ist 0
$date[5] -= 1900; # Jahr 0 ist 1900
return timelocal(@date);
}