#!/usr/bin/perl # Oliver Knill, 7/25/2000 - 4/4/2001 # 2005 various updates # october 2005 complete revamp writing several pages # november 21/05 bug with image variable # november 23/05 fix robot tags # october 2026, stripped down version here for a historical archive ##********************************* # Preparatation ##********************************* $modify = @ARGV[0]; $i=0; @calendar = ("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"); ################################### # input routines ################################### open (IN, "seminar_archive_all"); while () { $i++; chop; $s=$_; $s =~ s/\x91/`/g; $s =~ s/\x92/'/g; $s =~ s/\x93/"/g; $s =~ s/\x94/"/g; @talk = split("&&",$s); $comment=""; ($author,$seminar,$title,$speaker,$home,$time,$date,$location,$comment,$junk) = @talk; $speaker=~ s/^ //g; $speaker=~ s/^ //g; $speaker=~ s/^ //g; $speakerdate="$speaker$date"; $seminar = "\U$seminar"; $home = "\U$home"; ($month,$day,$year) = split("/", $date); ($first,$last,$s1,$s2,$s3,$s4,$s5,$s6,$s7,$s8,$s9,$s10) = split(" ", $speaker); $last=~ s/^ //g; $last=~ s/^ //g; $last=~ s/^ //g; if ($year le 2000) { $year+=2000; } $daynumber = $year*365+$month*31+$day; #print "$date $daynumber\n"; $speaker{$speakerdate}=$speaker; $first{$speakerdate}=$first; $last{$speakerdate}=$last; $lastfirst{$spakerdate}="$last$first"; $seminardate{$spakerdate}="$seminar$date"; $speakerdate{$speakerdate}=$speakerdate; $seminar{$speakerdate}=$seminar; $title{$speakerdate}=$title; $home{$speakerdate}=$home; $date{$speakerdate}=$date; $year{$speakerdate}=$year; $month{$speakerdate}=$month; $day{$speakerdate}=$day; $time{$speakerdate}=$time; $location{$speakerdate}=$location; chop($comment); $comment=~ s/"//g; $comment=~ s/'/ /g; $comment{$speakerdate}=$comment; $daynumber{$speakerdate}=$daynumber; if ($comment{$speakerdate} eq "") {$image="noarrow.gif";} else {$image="arrow.gif";} $image{$speakerdate}=$image; } close (IN); ################################### # output routines ################################### sub bydate { ($daynumber{$a} cmp $daynumber{$b}) } sub byreversedate { ($daynumber{$b} cmp $daynumber{$a}) } sub byspeaker { ($last{$a} cmp $last{$b}) } sub byreversespeaker { ($last{$b} cmp $last{$a}) } sub byseminar { ($seminar{$a} cmp $seminar{$b}) } sub byreverseseminar { ($seminar{$b} cmp $seminar{$a}) } sub bytitle { ($title{$a} cmp $title{$b}) } sub byreversetitle { ($title{$b} cmp $title{$a}) } $page="index.html"; $robots="all,nofollow"; open (LOG,">$page") || die "Can't open file $!\n"; $pagetitle="Harvard Math Seminar Archive (newest date up)"; &header; foreach $speakerdate (sort byreversedate keys(%speakerdate)) { &seminar_entry; } &footer; close(LOG); ################################### # HTML routines ################################### sub seminar_entry { print LOG<<"EOF"; $seminar{$speakerdate} $speaker{$speakerdate} ($home{$speakerdate}) $title{$speakerdate} $comment{$speakerdate}" @calendar[$month{$speakerdate}-1] $day{$speakerdate}, $year{$speakerdate}, $time{$speakerdate} at $location{$speakerdate} EOF } sub header { # Content-type: text/html\n print LOG<<"EOF"; Mathematics Department Seminar Archive 2000- 2020

Archive of math talks 2001 - 2020

EOF } sub footer { print LOG<<"EOF";
Remark October 16, 2026: there are $i talks displayed on this page.
Perl script written by Oliver Knill from 2001-2005. The seminar archive had been in place used from 2001 to 2020. The entire website (now called legacy Department website had been written in perl (handwritten all by Oliver). The total PERL code counts 68'000 lines. The setup worked from 2001 to 2019, when the website was moved to be replaced by a content management system Wordpress and getting maintained by dedicated department staff. Much of the maintainance of the website had been managed using Cron scripts on Oliver's office machine, that would grab data from server, process it and upload the processed data. The main office would enter seminar data that were powered by CGI scripts. EOF }