package My_Enc_Dec; use strict; use warnings; use base 'Exporter'; our @EXPORT_OK; { my $passphrase; BEGIN { $passphrase = 'choose something better'; } use Crypt::RC4; use MIME::Base64; push @EXPORT_OK, 'enc'; sub enc { ( my $ret = encode_base64( RC4( $passphrase, shift ))) =~ s/==\n$//; return $ret; } push @EXPORT_OK, 'dec'; sub dec { return RC4( $passphrase, decode_base64( shift )); } } 1; __END__ # ............................................................ # link-generating code use strict; use warnings; use My_Enc_Dec 'enc'; my $url = 'http://www.domain.com/cgi-bin/fetch.pl'; my $exp = enc( time + 60*60*24 ); my $link = "$url?$exp"; # ............................................................ #!perl # fetch.pl use strict; use warnings; use CGI; use My_Enc_Dec 'dec'; my $exp = dec( param( 'keywords' ) ); time <= $exp or have_a_cow();