#!/usr/bin/perl use Date::Discordian; use IButton::Temp; @txtimes=('evening', 'morning', 'afternoon', 'evening', 'evening'); @dow = ('sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday'); @mons = ('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'); my $weather = '/home/steve/.weatherreport'; #my $mailc = "maild -c spot"; my $ibutton_temp = new IButton::Temp( mode => c); my $erismonkey = new Date::Discordian( epoch => time ); $say = join (" ",@ARGV); if($say eq ""){ print<get_temp() ); } if( $say =~ /\%m/ ){ #$mail = `$mailc`; chomp $mail; } else { $mail = "I cannot retrieve your mail."; } if( $say =~ /\%h/ ){ $holiday = `holidays`; chomp $holiday; } ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); $time = "$hour:$min"; $stime = formattime($hour,$min); if($hour==11){$hour--} # make it so that afternoon really is *after* noon $txtime = $txtimes[($hour+1)/6]; $weekday = $dow[$wday]; $ddate = $erismonkey->discordian; my $ddate_full = $ddate; $ddate =~ s/,.+//; $say=~s/\%t/$temp/g; $say=~s/\%s/$sky/g; $say=~s/\%m/$mail/g; $say=~s/\%b/$time/g; $say=~s/\%T/$stime/g; $say=~s/\%D/$txtime/g; $say=~s/\%h/$holiday/g; $say=~s/\%w/$dow[$wday]/g; $say=~s/\%W/$mday/g; $say=~s/\%M/$mons[$mon]/g; $say=~s/\%e/$ddate/g; $say=~s/\%E/$ddate_full/g; $say=~s/\%i/$itemp/g; print "$say\n"; sub weather{ # gets the weather and returns data as a hash my $data = ""; my %rtval; my $line = ""; open WDATA, "$weather" or die "cannot open file: $!"; while($line = ){ $data.=$line; } close WDATA; while($data=~/^(.+)\:\s*(.+)/mig){ if(defined $2){$rtval{$1} = $2} } return %rtval; } sub format_temp{ my( $temp ) = @_; $temp = sprintf("%2.1f degrees celsius", $temp); $temp =~ s/\-/negative /; return $temp; } sub formattime { # hour, min my ($hour, $min) = @_; my $result = ""; if($hour < 10 && $hour > 0 && $min == 0){ $result .= "oh $hour" } elsif($hour == 0){$result .= "midnight"} else{ $result .= "$hour" } unless($hour + $min == 0){ if($min == 0){ $result .= " hundred hours" } elsif($min < 10 && $min > 0){ $result .= " oh $min" } else{ my $temp = ":"; $temp = " " if $hour == 0; $result .= "$temp$min" } } return $result; }