Understanding Perl's Special Variables - In Default (Page 2 of 11 )
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:
#!/usr/bin/perl
# set array
%stuff = ("phone", "Nokia", "car", "BMW",
"gun", "Smith & Wesson");
# iterate over array
foreach $s (keys(%stuff))
{
print "$s\n";
}
Here's the output:
car
gun
phone
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:
#!/usr/bin/perl
# set array
%stuff = ("phone", "Nokia", "car", "BMW",
"gun", "Smith & Wesson");
# 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,
#!/usr/bin/perl
# set array
%stuff = ("phone", "Nokia", "car", "BMW",
"gun", "Smith & Wesson");
# 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.
Next: Input... >>
More Perl Articles
More By icarus, (c) Melonfire