Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation

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 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";

Log In?

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

How do I use this? | Other CB clients
Other Users?
Others lurking in the Monastery: (4)
As of 2022-12-06 19:37 GMT
Find Nodes?
    Voting Booth?

    No recent polls found