[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Omaha.pm] Real world application



	
On Nov 21, 2004, at 1:54 PM, r c wrote:
Hi, I would like some help in finding some "real world" Perl
application examples.  Everything I'm finding are short programs
without proper logging and error handling and only accomplish a simple task.
Here's what I'm trying to accomplish for my first application:

1. Write a singleton class/module that will create/hold a file handle
to do logging (I found a singleton example in an old "ThePerlReview").
 This way all the other modules I write can simply call methods this
object to do logging. -- Is this a good idea, how is it done in the
real world so all modules can write to the same log?

Yup, we wrote one of those. It's important to us to be able to ensure that we can switch the logging behavior of "all programs" by just tweaking one class. How do you do it? You just write whatever logging routine you want into a single class, then use that class in all your programs. Nothing magical about it (until it saves you hours of coding -- that's pretty magical. -grin-).

2. Write a class/module that will read a configuration file in a
generic way (so like the logging class, I can reuse it for other
projects).  This way I can call get/set... methods, I've seen a great
generic example in "Object Oriented Perl" for the get/set part. -- I
want to do this instead of sourcing in a hash so it can check that
valid methods are being called.

Sure, setting explicit behavior for get/set methods is half the fun of OO coding. -grin-

3. Write a wrapper around Net::FTP that will catch exceptions and
retry login/put/get if time outs occur.  This class will use the
logging singleton class to write to the same filehandle that the main
application and all other modules are witting too.

We wrote something similar to that. We have many FTP partners, and I wanted to be able to do things like

my $ftp = Omni::FTP::new();
$ftp->connect('Partner X');
$ftp->send("myfile.txt");

Without having to remember all the specifics of how to get that file to the partner is question. Our home-grawn Net::FTP wrapper does all kinds of things automatically (compression, encryption, etc.), and then all my programs don't have to remember any tricky stuff.

4. The actual application will use these modules and setup the logging
singleton.

Yup.

Any help in pointing resources that do any of these specific things
and especially an "application" that does things similar to this would
be greatly appreciated.

I can't really email our source code around, but I certainly could demo it in any Perl Monger meeting. Did you have specific questions about anything?

j