[Perl] time/date differences

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


Hello.

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.

Thanks:


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:

		 recent(@date_time_strings)
	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.

		recent(@date_time_strings,$deadline_date_time_string)
	should return one string most recent to the deadline but not after the deadline.
	undef should be returned if no such string exists.


Thanks.



-- 
Shlomo Yona
shlomo at cs.haifa.ac.il
http://cs.haifa.ac.il/~shlomo/




More information about the Perl mailing list