Perl comes with a whole bunch of cryptically-named built-invariables, which clever Perl programmers exploit to reduce the number oflines of code in their scripts. This article examines some of the morecommonly-used special variable in Perl, with examples and illustrations ofhow they may be used.
One of the more important special variables you'll encounter in your Perl forays is $_, which is used by many Perl functions and constructs as the so-called "default variable" when none other exists. In order to demonstrate, consider the following example:
In this case, the foreach() loop iterates over the hash, assigning the key at each iteration to the $s instance variable; this variable is then printed with the print() function. If, however, you omit the instance variable in the foreach() loop, Perl will assume that you want it to use the default $_ variable as the instance variable.
The following example, which is equivalent to the one above, demonstrates:
# iterate over array
foreach (keys(%stuff))
{
print "$_\n";
}
Here, every time the loop iterates over the hash, since no instance variable is specified, Perl will assign the key to the default variable $_. This variable can then be printed via a call to print().
The $_ variable also serves as the default for both chop() and print() functions. Going back to the example above, you could also write it this way,
# iterate over array
foreach (keys(%stuff))
{
print;
}
which would return
cargunphone
The $_ variable is also the default variable used by file and input handles. For example, consider the following simple Perl script, which prints back whatever input you give it:
#!/usr/bin/perl
# read from standard input
# print it back
while (<STDIN>)
{
print $_;
}
In this case, every line read by the standard input is assigned to the $_ variable, which is then printed back out with print().
Knowing what you now know about print() and $_, it's clear that you could also write the above as
#!/usr/bin/perl
# read from standard input
# print it back
while (<STDIN>)
{
print;
}
The $_ default variable is used in a number of different places: it is the default variable used for pattern-matching and substitution operations; the default variable used by functions like print(), chop(), grep(), ord(), etc; the default instance variable in foreach() loops; and the default used for various file tests.