my $Start_Time = time; my $LogFile = "logfile.log"; my $ProgressIndex = 1; my $i = 0; EnterIntoLog ("My freaky message"); $i *= $i for (1..10000000); EnterIntoLog ("Another message"); sub EnterIntoLog { my $message = shift; my $Now = time; my $Seconds_Past = int ($Now - $Start_Time); my $Minutes = int ($Seconds_Past/60); my $Seconds = $Seconds_Past % 60; my $ProgressString = sprintf ( "%05d\t" . localtime($Now) . "\t%02d:%02d\t$message\n", $ProgressIndex++, $Minutes, $Seconds); print $ProgressString; open LOG, ">>$LogFile" or die "Can't open $LogFile: $!\n"; print LOG $ProgressString or die "Can't print to $LogFile: $!\n"; close LOG or die "Can't close $LogFile: $!\n"; }