Beefy Boxes and Bandwidth Generously Provided by pair Networks
Think about Loose Coupling
 
PerlMonks  

Re^3: How's My Style Now?

by YuckFoo (Abbot)
on Feb 10, 2010 at 22:04 UTC ( #822529=note: print w/ replies, xml ) Need Help??


in reply to Re^2: How's My Style Now?
in thread How's My Style Now?

You could put all the link particulars in a module so that changes can be made in one place. Here is a Links.pm to give you ideas. It would be better to go a step further and have the module read a configuration file, but I didn't want to spoil all your fun.

If you only have a handful of links to maintain, a database may be overkill. By putting this in a module, you should be able to make the change from a config file to database with little, if any, change in the calling scripts.

#!/usr/bin/perl package Links; use strict; use CGI qw(:standard); my $Links = { musings => { text => 'Musings', link => '/cgi-bin/musing.cgi', id_list => [ 'musing_id', ], }, rants => { text => 'Rants', link => '/cgi-bin/rants.cgi', id_list => [ 'rant_id', 'ref_id', ], }, stuff => { text => 'Other Stuff and Junk', link => '/cgi-bin/misc.cgi', id_list => [ ], }, }; #----------------------------------------------------------- sub make { my $key = shift; my $vals = shift; (defined($Links->{$key})) or return; my $info = $Links->{$key}; my @id_list; for my $id (@{$info->{id_list}}) { if (defined($vals->{$id})) { push @id_list, "$id=$vals->{$id}"; } else { # what if? } } my $url = $info->{link}; if (@id_list) { my $id_str = join('&', @id_list); $url = "$url?$id_str"; } return a({-href=>$url}, $info->{text}); } 1;
#!/usr/bin/perl use strict; use Links; my $vals = { musing_id => 42, rant_id => 1, ref_id => 2, foo_id => 3, }; my $link = Links::make('musings', $vals) or die; print "$link\n"; my $link = Links::make('rants', $vals) or die; print "$link\n"; my $link = Links::make('stuff', $vals) or die; print "$link\n";


Comment on Re^3: How's My Style Now?
Select or Download Code

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://822529]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others romping around the Monastery: (7)
As of 2014-09-22 12:23 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    How do you remember the number of days in each month?











    Results (191 votes), past polls