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 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 demo.pl, 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 demo.pl -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 param1.pl (lab04 folder, of course) program that prints the first parameter you passed to it. It’s very simple:
print "The first parameter is $ARGV.\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 params.pl 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.