Lab04: passing arguments to Perl scripts

This post will review how to pass arguments to a Perl script. This is something you can’t test online with codepad (unfortunately), because codepad only runs the script, without emulating a whole system with a shell and files to read…


What arguments are

Learning how to play with the Linux shell we understood that each program (or command) can be launched alone, or with parameters. We refer to these parameters as “arguments”.

An example below:

ls -l
ls /usr/bin

The three commands always start with the program to run, but the first only ask the shell to execute the ls program, while the second and the third one also pass some “arguments” to it.

This is a core functionality of any Perl program: its the way we, the user, can ask the Perl program what to do.

How to pass parameters to a Perl script

If we save a Perl script as, we know that to launch it we should type (provided that the script is in our current directory):


provided that this is the way we launch the command we now want to pass parameters the same way we did with ls, like:

perl -l -n ciao

In the line above I gave three parameters to the script. As we cant figure out how many parameter a program needs, Perl stores all the passed arguments into an array, called @ARGV (remember that Perl is case sensitive!!!).

A first example

We are going to create a (lab04 folder, of course) program that prints the first parameter you passed to it. It’s very simple:

print "The first parameter is $ARGV[0].\n";

It’s your turn now hw4.1

Now create a script that will print all the parameters passed, not just the first. Save it as in the lab04 folder.

We want to print one parameter per line, like “The parameter is …“, and at the end it will print “You passed # total parameters“.

Submit it as usual, using hw4.1 as code.



One thought on “Lab04: passing arguments to Perl scripts

  1. […] 1) How to pass arguments to a script – that is how to give some parameters to our program so that they perform custom calculations for us. […]

Leave a Reply

Your email address will not be published. Required fields are marked *