Perl | Use of Hash bang or Shebang line - GeeksforGeeks

11 Jul, 2019
Practical Extraction and Reporting Language or Perl is an interpreter based language. Hash-bangs or shebangs are useful when we are executing Perl scripts on Unix-like systems such as Linux and Mac OSX. A Hashbang line is the first line of a Perl program and is a path to the Perl binary. It allows invoking the Perl scripts directly, without passing the file to the Perl as an argument. A Hashbang line in Perl looks like:
#!/usr/bin/perl
A Hashbang line is called so because it starts with a Hash(#) and a bang(!). A hashbang line in Perl holds significant importance in a Perl code. Now, let’s get started with the use of this Hashbang line.
Example: Suppose we have a hello world program script of Perl which we will execute on a Linux system with the terminal.
use strict;use warnings;   print "Hello World\n";
Now, we will save it with the name hello.pl and in the terminal, we will execute it by –
$ perl hello.pl

Output:Here, in the above code, the terminal is running the Perl first and then the Perl is asked to run the code script. If the code script is run without invoking the Perl first then an error arises.Try running the code as shown below:
$ hello.pl

Output:Here, the shell we used, tried to interpret the commands in the file. However, it could not find the command print in Linux/Unix. Hence, there is a need to inform shell that it is a Perl script. This is the point where the concept of Hashbang comes into action. Hashbang informs the terminal about the script.However, before executing this code, there is a need to set the path of the shell to add the current directory to existing directories. This can be done by executing the following command:
$ PATH = $PATH:$(pwd)

This will append the current working directory to the list of directories in the PATH environment variable.Next, there is a need to add the Hash-bang line #!/usr/bin/perl in the Perl script file hello.pl. This line is always added at the beginning of the code i.e. the first line of the code script is the Hashbang line.
#!/usr/bin/perluse strict;use warnings;   print "Hello World\n";
If the above code is run as $ hello.pl, without executing the Perl first, then the output will be:Above code works fine and no error is produced because of the Hashbang line #!/usr/bin/perl added as the first line of the script.
When the script is executed it is run in the current shell environment. If the script starts with a hash and a bang (hash-bang) #! then the shell will run execute the application that has its path on the hash-bang line (in this case /usr/bin/perl) which is the standard location of the Perl compiler-interpreter. So, the hash-bang line holds the path to the Perl compiler-interpreter.Now, the error occurs when there is no hash-bang line in the file and we try to execute it without running Perl explicitly. The shell assumes that the script is written in Bash and thus tries to execute it accordingly leading to errors.
perl-basics
Picked
Perl
Perl
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Comments
Old Comments
Perl | Writing to a File
Perl Tutorial - Learn Perl With Examples
Perl | Multidimensional Hashes
Perl | File Handling Introduction
Perl | Reading Excel Files
Perl | Special Character Classes in Regular Expressions
Perl | shift() Function
Perl | Date and Time
Perl | index() Function
Perl | Appending to a File