Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people, just like you, are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
Solved

Passing an argument through a A HREF tag.

Posted on 1998-04-25
13
406 Views
Last Modified: 2013-12-25
Greetings,
      I want to run a Perl script using an A HREF tag, and be able to pass a variable along with it as well.
example:
<A href = "Smessage.pl Username" target ="Frame5">Send</a>
The script would recieve "Username" as an argument (I'm using perl and would like to use $ARGV).  If it's not possible to do this with an argument how would I do this as a get/post action?  I've seen it done on the web before.  Much like a banner advertisement sending the page owners name to the cgi script.
Thanks in Advance.
0
Comment
Question by:cide
  • 4
  • 3
  • 3
  • +2
13 Comments
 
LVL 84

Expert Comment

by:ozo
ID: 1827966
<A href = "Smessage.pl?Username">
Would pass Username in $ENV{QUERY_STRING}
0
 

Author Comment

by:cide
ID: 1827967
Yeah, I know how to do that.  I was wondering if it was possible through the $ARGV.  I don't really want to use the QUERY_STRING but maybe I'll have to.
0
 
LVL 5

Expert Comment

by:icd
ID: 1827968
You only have two options. The method that ozo gave uses the GET method which puts the data in the QUERY_STRING. With a form (but not with a HREF) you can use the POST method which puts the data in stdin. There is no other way.

0
Master Your Team's Linux and Cloud Stack!

The average business loses $13.5M per year to ineffective training (per 1,000 employees). Keep ahead of the competition and combine in-person quality with online cost and flexibility by training with Linux Academy.

 

Author Comment

by:cide
ID: 1827969
Ok, thanks anyways.
0
 
LVL 75

Expert Comment

by:Michel Plungjan
ID: 1827970
Try this:

<FORM NAME="msgform" ACTION="Smessage.pl" METHOD="POST" TARGET="Frame5">
<INPUT NAME="USERNAME" TYPE="HIDDEN" VALUE="">
</FORM>
<A HREF="javascript:document.msgform.USERNAME.value='username1';document.msgform.submit();">User name 1</A>

Michel
0
 

Author Comment

by:cide
ID: 1827971
That's not an argument.  It's still form data.
0
 
LVL 75

Expert Comment

by:Michel Plungjan
ID: 1827972
But it is not via QUERY_STRING

Last attempts:
Use a stub and call your program that needs the argv as a subroutine
0
 
LVL 2

Accepted Solution

by:
jaked earned 50 total points
ID: 1827973
Actually, the CGI spec says that if the query string is of the form ?foo+bar+baz, rather than ?foo=bar&baz=quux, it gets split on the pluses and passed in as the arglist to the script. So ozo's example passes Username as argv[1] as well as in the QUERY_STRING environment variable.

0
 
LVL 84

Expert Comment

by:ozo
ID: 1827974
Actually, in Perl that would be $ARGV[0]
0
 
LVL 2

Expert Comment

by:jaked
ID: 1827975
You are right sir.
0
 
LVL 84

Expert Comment

by:ozo
ID: 1827976
Even so, I'd hesitate to recommend using $ARGV[0] rather than $ENV{QUERY_STRING}
If you ever did get an = there, you could lose the @ARGV parameters
(You'd have to use something like ?foo%3dbar&baz%3dquux in that case)
0
 
LVL 75

Expert Comment

by:Michel Plungjan
ID: 1827977
When I needed to have a program running as a cgi AND standalone, I would test the arguments passed and if empty I would look at the environment variables.

Michel
0
 
LVL 84

Expert Comment

by:ozo
ID: 1827978
But as jaked points out, you can't rely on @ARGV being empty when running as a CGI.
Also, you omit the case of parameters being passed in STDIN.
BTW, with
 use CGI.pm;
all the arg parsing is done for you as a CGI, and you can also
pass arguments on the command line or in STDIN for stand alone testin.

0

Featured Post

Webinar: Aligning, Automating, Winning

Join Dan Russo, Senior Manager of Operations Intelligence, for an in-depth discussion on how Dealertrack, leading provider of integrated digital solutions for the automotive industry, transformed their DevOps processes to increase collaboration and move with greater velocity.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

In this tutorial I will show you how to make a simple HTML bar chart with the usage of WhizBase, If you want more information about WhizBase please read my previous articles at http://www.experts-exchange.com/ARTH_5123186.html (http://www.experts-ex…
It is a general practice to get rid of old user profiles on a computer  in a LAN environment. As I have been working with a company in a LAN environment where users move from one place to some other place at times. This will make many user profil…
The viewer will learn how to dynamically set the form action using jQuery.
The viewer will learn how to count occurrences of each item in an array.

809 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question