http://www.perlmonks.org?node_id=650104

grashoper has asked for the wisdom of the Perl Monks concerning the following question:

I need to pass a string to a subroutine but cannot seem to get it to work, here is some sample of what I mean. snippet one is preauth file (pass thru authenticaton) topic obtained from querystring and passed to sub thelp (Hopefully result) which is not working for me. code for sub tHelp follows code snippet from preauth, in addition there is a loop in mLeftIndex() which creates the help file, I am attempting to modify the startpoint of the file..
$User = $Request->item("Login")->item(); $Site = $Request->item("Site")->item(); $topic= $Request->item("Topic")->item(); my $Referer = $Request->ServerVariables("HTTP_REFERER")->item(); $Request->ServerVariables("QUERY_STRING")->item(); use CGI; use OLE; use CGI::Simple; $query= new CGI; %ttopics = ( home => 'Content/HELP/TPO\/default\//TEMPO 5 Help Topics +-01-1.html', listingmgr => 'Content/HELP/TPO\/default\//TEMPO 5 Help Topics +-06-1.html', cma => 'Content/HELP/TPO\/default\//TEMPO 5 Help Topics +-11-1.html', hotsheetmgr => 'Content/HELP/TPO\/default\//TEMPO 5 Help Topics +-10-1.html', clientmgr => 'Content/HELP/TPO\/default\//TEMPO 5 Help Topics +-05-1.html', tempofinancials => 'Content/HELP/TPO\/default\//TEMPO 5 Help Topics +-14-1.html', tools => 'Content/HELP/TPO\/default\//TEMPO 5 Help Topics +-18-1.html', rep => 'Content/HELP/TPO\/default\//TEMPO 5 Help Topics +-12-01.html', taxmgr => 'Content/HELP/TPO\/default\//TEMPO 5 Help Topics +-13-1.html', TempoMemberInfo => 'Content/HELP/TPO\/default\//Tempo_help-01-1.htm +l', email => 'Content/HELP/TPO\/default\//Tempo_help-01-1.htm +l', ); if (!defined($topic)) { my $startpoint='Content/HELP/TPO/default/Tempo_help-08-1.html'; } my $baseurl='http://www.tempohelp.com/index.asp?tab=Help&View=#'; $nightmare = $ttopics{$topic}; my @topicvalues=$nightmare; my @baseurl=$baseurl; tHelp(@baseurl,@startpoint);
tHelp
sub tHelp { $baseurl=shift(@baseurl); $startpoint=shift(@topicvalues); $Response->write("$baseurl"."$startpoint"); # This returns values for baseurl and startpoint so far so #good then deeper in my sub when I go to use startpoint it does not work why +? if ($Session->{'usrType'} eq 'Std') { if ($Request->ServerVariables("SERVER_NAME")->item()=~/tempohelp/i +) { #my startpoint='Content/HELP/TPO/default/Tempo_help-08-1.html'; my $target='Tempo%20help_frame'; $str .= shadowBox("Tempo Help", qq^<help_iframe name="$target" startpo +int="$startpoint"/>^ , ($g_docWidth/5*4-(2*$g_docSpace))); return $str; } }
finally code for loop to generate helpfile into iframe.
if ( $Request->ServerVariables("SERVER_NAME")->item() =~ /tempohelp/ ) + { my $toc_file = ( $Session->{'usrType'} eq 'Pro' ) ? 'e:\Suppor +tWeb\Content\HELP\PRO\TOC.html' : 'e:\SupportWeb\Content\help\tpo\def +ault\TOC.html'; my $user_type = uc $Session->{'usrType'}; if ($user_type='STD') {$user_type='TPO/default/'} $startpoint=shift(@topicvalues); open TOC, $toc_file; my @toc_lines = <TOC>; close TOC; foreach my $line ( @toc_lines ) { $content .= qq^<rlink tab="Help" script="frames['help_ifra +me'].location.href='Content/HELP/$user_type/$1'" title="$3"> </rlink>^ if ( $line =~ /<p class="pTOC\d"><a +href="(.*?)"\s+target="(.*?)">(.*?)<\/a>/ ); } $content .= '</leftIndex>'; }

Replies are listed 'Best First'.
Re: problems passing to subroutine
by thezip (Vicar) on Nov 11, 2007 at 01:28 UTC
    1. Once again, you're not using strict nor warnings
    2. In the line that initializes $default_topic, you use an uninitialized version of $topic. $topic is not set until a few lines later
    3. What is the $help_file variable for? You're not using it anywhere...
    4. You don't need to call the tHelp() sub with the preceding '&' as you do with &tHelp()

    Where do you want *them* to go today?
Re: problems passing to subroutine
by dragonchild (Archbishop) on Nov 11, 2007 at 01:23 UTC
    Which subroutine are you attempting to pass a string to? Your snippet doesn't tell me what your problem is.

    My criteria for good software:
    1. Does it work?
    2. Can someone else come in, make a change, and be reasonably certain no bugs were introduced?
Re: problems passing to subroutine
by kutsu (Priest) on Nov 11, 2007 at 01:20 UTC

    What's the code for the subroutine tHelp?