P is for Practical PerlMonks

### problems passing to subroutine

by grashoper (Monk)
 on Nov 11, 2007 at 01:03 UTC Need Help??
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);

[download]
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;
}
}

[download]
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>';
}
[download]

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?

Create A New User
Node Status?
node history
Node Type: perlquestion [id://650104]
Approved by kutsu
help
Chatterbox?
 [1nickt]: Heh, or they assume that if I want all that I am a "gamer" and I must want red backlighting for the keyboards and that I will pay $3500 ... [stevieb]: what is your budget? HP 17" 4k display, DVD writer, full numeric keypad [stevieb]:$1500 USD

How do I use this? | Other CB clients
Other Users?
Others chanting in the Monastery: (4)
As of 2017-03-26 18:08 GMT
Sections?
Information?
Find Nodes?
Leftovers?
Voting Booth?
Should Pluto Get Its Planethood Back?

Results (315 votes). Check out past polls.