SPUG: QOTW restarted -- #16 currently running

Michael R. Wolf MichaelRWolf at att.net
Thu May 13 10:39:41 CDT 2004

Perl Quiz-of-the-Week #16 is out, after a long hiatus.

Get more information:

Here's the body of the quiz.

IMPORTANT: Please do not post solutions, hints, or other spoilers
        until at least 60 hours after the date of this message.

IMPORTANTE: Por favor, no enviéis soluciones, pistas, o cualquier otra
        cosa que pueda echar a perder la resolución del problema hasta
        que hayan pasado por lo menos 60 horas desde el envío de este
        mensaje. Gracias.

IMPORTANT: S'il vous plaît, attendez au minimum 60 heures après la
        date de ce message avant de poster solutions, indices ou autres
        révélations. Merci.

WICHTIG: Bitte schicken Sie keine Lösungen, Tipps oder Hinweise für
        diese Aufgabe vor Ablauf von 60 Stunden nach dem Datum dieser
        Mail. Danke.

BELANGRIJK: Stuur aub geen oplossingen, hints of andere tips in de
        eerste 60 uur na het verzendingstijdstip van dit
        bericht. Waarvoor dank.

VNIMANIE: Pozhalujsta ne shlite reshenija, nameki na reshenija, i
        voobshe lyubye podskazki v techenie po krajnej mere 60 chasov
        ot daty etogo soobshenija.  Spasibo.

Qing3 Zhu4Yi4: Qing3 Ning2 Deng3Dao4 Jie1Dao4 Ben3 Xin4Xi2 Zhi1Hou4 60
        Xiao3Shi2, Zai4 Fa1Biao3 Jie3Da2, Ti2Shi4, Huo4 Qi2Ta1 Hui4
        Xie4Lou4 Da2An4 De5 Jian4Yi4.  Xie4Xie4.


This quiz is phrased for Unix systems. If it makes sense to write a
solution for Windows or other systems, feel free to do so.

The usual way to look for a character string in files in Unix is to use
grep. For instance, let's say you want to search for the word 'summary'
without regard to case in all files in a certain directory. You might say:

grep -i summary *

But if there is a very large number of files in your directory, you will
get something like this:

ksh: /usr/bin/grep: arg list too long

Now, you could just issue multiple commands, like this:

grep -i summary [A-B]*
grep -i summary [C-E]*

... but that's so tedious. Write a Perl program that allows you to search
all files in such a directory with one command.

You're probably wondering:
- Should I use grep? egrep? fgrep? Perl's regex matching?
- Should there be an option to make the search case-sensitive or not?
- Should we traverse all files under all subdirectories?

You can decide for yourself on these questions. There is one other
requirement, though: the program must not fail when it finds things for
which grepping does not make sense (e.g. directories or named pipes).

Michael R. Wolf
    All mammals learn by playing!
        MichaelRWolf at att.net

More information about the spug-list mailing list