[Perl] time/date differences

Shlomo Yona shlomo at cs.haifa.ac.il
Thu Oct 31 04:04:52 PST 2002


I am writing code for an "automatic homework grader" for an introduction course
in c. Following is a description of something I had to do, and I wonder if you
guys have ideas for better code than I do.


I'm writing a script to parse lines like this:

-rw-r--r--    1 shlomo   shlomo        760 Oct 29 23:36 1/022308399/1/hw1.c
-rw-r--r--    1 shlomo   shlomo        198 Oct 30 17:29 1/066589623/1/targil1.c
-rw-r--r--    1 shlomo   shlomo        884 Oct 28 13:57 1/306370966/1/home.c
-rw-r--r--    1 shlomo   shlomo      24583 Oct 28 22:02 1/035846088/1/hw1.c
-rw-r--r--    1 shlomo   shlomo        218 Oct 28 21:55 1/035846088/1/noam.c
-rw-r--r--    1 shlomo   shlomo        385 Oct 30 18:09 1/035848688/1/Homework1.c
-rw-r--r--    1 shlomo   shlomo        266 Oct 30 20:40 1/041955584/1/hw1.c
-rw-r--r--    1 shlomo   shlomo        584 Oct 28 14:47 1/036000479/1/dudi.c

I want to extract only 3 field:

	1. date
	2. time
	3. filename (including the directory)

The input is produced by a unix oneliner:

	find SOMEDIR -type f -iname "*.c" -exec ls -ltr {} \;

SOMEDIR in this case was 1/

two questions:

1. Can you suggest a oneliner that outputs just what I need?
2. Can you suggest a nice clean Perl code that can take two strings of the form
	Oct 29 23:36
and can perform the following operations:

	should return one string from the list which is the more recent date_time
	or undef if the list is empty. You can assume the strings are of the form
	of the date_time you get from 'ls -l' like the examples above.

	should return one string most recent to the deadline but not after the deadline.
	undef should be returned if no such string exists.


Shlomo Yona
shlomo at cs.haifa.ac.il

More information about the Perl mailing list