#!/usr/bin/perl use strict; my ($foo, $bar); my $infile = $ARGV[0]; my $enddate = $ARGV[1]; if (!$infile||!$enddate){print "Syntax calarchiver.pl (as 'YYYYMMDD')"; exit;} my $outfile=$infile; $outfile =~ s/.ics/.archive.ics/g; open (IN,'<', $infile) or die "Cannot open $infile"; open (OUT, '>', $outfile) or die "cannot open $outfile"; my $inevt =0; my $evt=''; my $badevt=0; my $instr; my @parts; my @dparts; while () { $instr = $_; chomp($instr); @parts = split(/:/,$instr); PARSE: { if (($instr ne "BEGIN:VEVENT") && !$inevt){ print OUT $_; last PARSE;} if ($instr eq "BEGIN:VEVENT"){$inevt = 1; $evt .= $instr; last PARSE;} if ($parts[0] =~ /DTSTART/){ @dparts = split(/T/, $parts[1]); if ($dparts[0] > $enddate){$badevt=1; last PARSE;} else {$badevt =0; $evt .= $instr; last PARSE;} } if ($inevt && !$badevt) {$evt .=$instr; last PARSE;} if ($instr eq "END:VEVENT"){ if ($badevt){$inevt=0;$badevt=0;$evt='';print "bad event \n";last PARSE;} else {$evt .= $instr; print " good event \n"; print OUT $evt; $inevt=0;$badevt=0;$evt=''; last PARSE;} } $foo=$bar; } } close OUT; close IN; exit;