Perl Programming/Basic variables

From Wikibooks, open books for an open world
Jump to navigation Jump to search
Previous: First programs Index Next: Strings

In Perl, there are five different types of variables, each indicated by its own sigil character: scalars ($), arrays (@), hashes (%), subroutines (&), and typeglobals (*). We first introduce scalars, as they are easiest to understand.

Scalar variables

[edit | edit source]

Although they have a complicated name, a scalar variable is just a way of storing a value for later use. For example, consider:


print "Hello, John.\n";

If we wanted to change the name of the user, we can just change the string. However, if this program were hundreds of lines long and the name was used several times, trying to find the strings throughout the program would be more fuss than it was worth. Instead, it is common to use variables for any values that might change.


my $firstname = "John";

print "Hello, $firstname.\n";

This new program gives exactly the same output as the previous one. There are several new things about this program, the most obvious being the line

  • my $firstname = "John";
    • my Tells the perl interpreter to give you a new variable. Technically, this is optional but highly recommended.
    • $firstname Tells the perl interpreter that you want a scalar variable called firstname
    • = Tells the perl interpreter to assign the value on it's right hand side to the variable on the left hand side
    • "John" Tells the perl interpreter that every time you use $firstname you want it to use the string John.

While using variables to contain information that you have programmed is all very well, variables are used to store data that can change while your program runs, as their name implies.


my $firstname = "Jonathan";
print "Hello, $firstname.\n";

$firstname = "John";
print "Goodbye, $firstname.\n";

You should notice that when we change the value of $firstname we do not need to use the my operator. This is because we have already told perl to give us the variable, and it is now ours to do what we wish with.


[edit | edit source]

Now, while strings are very useful, there is a place in computer programs for numbers as well. A scalar variable can contain either a number or a string.

my $age = 17;

print "Hello, $age year old.\n";

Perl does not provide any easy way of telling the type of information stored in a scalar variable. Indeed, if you give Perl a string and ask it to do number operation, Perl will automatically convert the string into the number; and vice versa. Here is an example:


my $x = 10;
my $y = $x + 1;

print "Using a number $x + 1 = $y.\n";

$x = "10";
$y = $x + 1;

print "Using a string $x + 1 = $y.\n";

$x = "ten";
$y = $x + 1;

print "Using an English word, $x + 1 = $y.\n";

$x = "2ten";
$y = $x + 1;

print "Using a funny string, $x + 1 = $y.\n";

If you run this program, you can see that both the first two examples result in 11 being stored to $y. Perl does not convert English words to numbers, though, and if you give a string like "ten" it will not turn it to 10, but instead just think it is 0. The last example shows that it actually tries to understand the string as a number, and stops whenever it finds something it doesn't understand.

Raw printing

[edit | edit source]

It is of course possible to output variables without including them in a string.


my $forename = "John";
my $message = "Hello ";

print $message;
print ", ";
print $forename;
print "\n";


[edit | edit source]
  • Try making a program that says hello to several people that uses the same print statement each time, but changes a variable containing a name.
  • Try making a program with four variables, the first and last names of two people and prints the name changes when they get married.
  • Try making a program that adds two variables together into a third variable and prints them and the result.
Previous: First programs Index Next: Strings