Home arrow Perl Programming arrow Page 2 - Understanding Perl's Special Variables

In Default - Perl

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.

TABLE OF CONTENTS:
  1. Understanding Perl's Special Variables
  2. In Default
  3. Input...
  4. ...And Output
  5. Getting Into An Argument
  6. The Right Path
  7. To Err Is Human
  8. A Question Of Ownership
  9. Rank And File
  10. Calling For A Translator
  11. End Zone
By: icarus, (c) Melonfire
Rating: starstarstarstarstar / 38
July 10, 2003

print this article
SEARCH DEV SHED

TOOLS YOU CAN USE

advertisement

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.



 
 
>>> More Perl Programming Articles          >>> More By icarus, (c) Melonfire
 

blog comments powered by Disqus
escort Bursa Bursa escort Antalya eskort
   

PERL PROGRAMMING ARTICLES

- Perl Turns 25
- Lists and Arguments in Perl
- Variables and Arguments in Perl
- Understanding Scope and Packages in Perl
- Arguments and Return Values in Perl
- Invoking Perl Subroutines and Functions
- Subroutines and Functions in Perl
- Perl Basics: Writing and Debugging Programs
- Structure and Statements in Perl
- First Steps in Perl
- Completing Regular Expression Basics
- Modifiers, Boundaries, and Regular Expressio...
- Quantifiers and Other Regular Expression Bas...
- Parsing and Regular Expression Basics
- Hash Functions

Developer Shed Affiliates

 


Dev Shed Tutorial Topics: