[Omaha.pm] Real world application

Jay Hannah jay at jays.net
Sun Nov 21 16:39:12 CST 2004


	
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



More information about the Omaha-pm mailing list