[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