What is the shebang line in a Perl CGI script?

  • Thread starter Thread starter Math Is Hard
  • Start date Start date
Join the discussion
Registration is free. Ask a follow-up in this thread, or start your own.
3 replies · 2K views
Staff Emeritus
Science Advisor
Gold Member
Messages
4,663
Reaction score
36
I am having trouble understanding what CGI scripts are. What I *think* I know about it is that there is no "CGI" language, and when we say CGI script, we mean something written in Perl or Php or some other language that is run on the server. But I could just be utterly confused.

I was looking at this example:

#!/usr/bin/perl -wT
print "Content-type: text/html\n\n";
print "Hello, world!\n";

The 2nd and 3rd lines are written in Perl, I believe. But what is the first? This is just an instruction to the server to tell it the language? And what language is that first line written in? Is it a UNIX OS command? I don't know anything about UNIX, so that may be why I don't know what's going on.

Thanks!:smile:
 
Physics news on Phys.org
anyone? I didn't think these were tough questions...
 
CGI (Common Gateway Interface) is a communication protocol that specifies how programs communicate and send information back and forth between a server and client program.
The Common Gateway Interface, or CGI, is a standard for external gateway programs to interface with information servers such as HTTP servers
A CGI script can be written in any language, but in the early days of httpd were commonly written in Perl

The first line of your Hello World script tells the system where to find the Perl interpreter and is common in all unix shell scripts. Basically it tells the system what interpreter to use to execute the commands contained in the file.

The #! is called a 'shebang'

http://hoohoo.ncsa.uiuc.edu/cgi/
CGI on Wikipedia
 
Last edited by a moderator:
Thanks, imabug.

I just came across that first link you posted this afternoon and it has been helpful. I looked at the Wiki info earlier, but it didn't clear it up for me at all.