Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl: the Markov chain saw
 
PerlMonks  

Re: Using CGI::Application in large projects

by Ryszard (Priest)
on Jan 23, 2003 at 08:46 UTC ( #229260=note: print w/replies, xml ) Need Help??


in reply to Using CGI::Application in large projects

I'm using C:A with hundreds of run modes. It works prefectly.

What I have is heaps of seperate and distinct applications, each application is self contained, ie an application for "moving house" (i work for an ISP) and an application for managing IP's. As you can appreciate these are very distinct modules.

What makes them part of a single user interface is session management and access control, which is done centrally. The structure we use is a layer on top of C:A that handles the session management and access control that has use base CGI::Application in it (lets call this module "control")

Whenever a new application is coded we need to add a use base Control; to it, and there you have it, implicit session management and access control.

All the business logic is mapped out at this level. All the external access (to DB's, sockets etc) is abstracted away from this into seperate modules which any application can access.

Experience thus far with this type of design has shown it can scale quite well (we use an RDBMS for access control and session management).

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://229260]
help
Chatterbox?
[Corion]: And on 5.20, the following also outputs no find:perl -wle 'for my $x ("\x{2000}".."\ x{1fffff}") { if( $x && ! length $x ) { warn qq(<$x>); warn length $x; die } }'
[Corion]: (this time on Unix)
[hippo]: Understood. I'll have to go through the code and see if it's doing anything fancy with ties, dual-vars or non-scalars. In the end, it's probably a bug though.
[Corion]: Aaah - you should be able to do this with overload, but I would hit somebody really hard if they constructed objects that are true but the empty string, and you not knowing about the domain knowledge where this makes sense
[Eily]: you could tie a variable into not having the same value each time, if you like to make people who try to debug your code facepalm
[Corion]: perl -wle 'package o; use overload q("") => sub {warn "str"; ""}, bool => sub{warn "bool"; 1}; package main; my $o={}; bless $o => o; print "Yay" if ($o && !length($o))'
[Corion]: But people writing such code should document the objects they construct and why it makes sense for an object to be invisible as string while being true in a boolean context
[hippo]: That's equal parts clever and horrendous.
[Eily]: the overload version wouldn't return true with "$x" && !length $x though, I guess

How do I use this? | Other CB clients
Other Users?
Others contemplating the Monastery: (14)
As of 2017-07-27 13:34 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    I came, I saw, I ...
























    Results (413 votes). Check out past polls.