Special variables in Perl
Last Updated :
12 Jul, 2025
Special Variables in
Perl are those which are already defined to carry out a specific function when required. The differentiating factor between a special Variable in Perl and a random character is the use of Punctuation mark after the variable, these could be
@,
$ or
%, etc, for example,
$_.
Perl Variables helps a developer in saving time since these are generally shortcuts to bigger commands in English.
Note: The most common special variable is $_, which is used to store the default input.
Look at the following codes to get an idea about this special variable:
Perl
# Providing some input
while ( <> )
{
# Printing the default value
# stored in $_
print lc($_);
}
This is the same as
Perl
#!/usr/bin/perl
while ( $abc = <> )
{
print lc($abc);
}
Following is an example of the above mentioned special variable in working format:
Perl
#!/usr/bin/perl
foreach ('Mango', 'Orange', 'Apple')
{
print($_);
print("\n");
}
Output:
The output of the above code will be:
Mango
Orange
Apple
Types of Special Variables
Special Variables can be categorized on the basis of their usage and nature. These are:
- Regular Expression Special Variables
- File handle Special Variables
- Global Scalar Special Variables
- Global Array Special Variables
- Global Hash Special Variables
- Global Special Constants
- Global Special File handles
Regular Expression Special Variables
$digit: The main function of
$digit
is to hold the text matched in a similar set of parentheses in the last matched pattern. However, patterns already matched in a nested block are not counted.
$&, $MATCH: Used to find the string matched in the last successful pattern search. Though Matched in a hidden block or enclosed in the current set are not counted. This is a read-only variable and is scoped dynamically.
perl
#!/usr/bin/perl
# Declaring local string
local $_ = 'abcdefghi';
# Pattern matching
/def/;
# Printing the matched pattern
print "$&\n";
$`, $PREMATCH: The string preceding a quoted string was matched with the last successful pattern match. It doesn't count any matches enclosed within a block or eval enclosed by the current block.
perl
#!/usr/bin/perl
# Declaring local string
local $_ = 'abcdefghi';
# Pattern matching
/def/;
# Prematching the pattern
print "$`:$&\n";
$', $POSTMATCH: The string following whatever was matched by the last successful pattern match not counting any matches hidden within a block or eval enclosed by the current block.
perl
#!/usr/bin/perl
# Declaring local string
local $_ = 'abcdefghi';
# Pattern matching
/def/;
# Postmatching the pattern
print "$&:$'\n";
File handle Special Variables
$|, $OUTPUT_AUTOFLUSH
: If set to nonzero, this variable forces a flush after every write or print statement on the output channel that is currently being selected.
$%, $FORMAT_PAGE_NUMBER
: This variable finds the currently selected output channel and the current page number.
$=, $FORMAT_LINES_PER_PAGE
: This variable returns the current page length i.e. the lines which are printable of the currently selected output channel. The default value for this variable is 60.
$-, $FORMAT_LINES_LEFT
: Returns the number of lines left on the page of the currently selected output channel.
$~, $FORMAT_NAME
: The name of the current report format for the currently selected output channel. The default value is the name of the filehandle. For example, for
STDOUT, the default format name would be
STDOUT itself.
Global Scalar Special Variables
Below mentioned is the list of some of the scalar special variables. And listed corresponding English like names along with the symbolic names.
$_, $ARG : Used as a default variable to accept input and to perform pattern-searching, when variable is omitted.
$., $NR : Contains the line number of the filehandle last updated. The value is reset to zero if the filehandle is closed. This variable will never move the seek pointer in the file.
$/, $RS : This is the input record separator. If $/ is undefined, the entire file is read as a single input for null value a blank is considered as a delimiter. It creates a new line by default.
perl
#!/usr/bin/perl
local $/; # enable "slurp" mode
local $_ = <FH>; # whole file now here
s/\n[ \t]+/ /g;
'$, ', $ OFS: The Output Field Separator command is used when the user wants to print a default value between each print operator argument. The default value for this variable is
undef.
$\, $ORS: The Output Record Separator command is used when the user wants to print the value at the last of the print operator arguments.
$!, $OS_ERROR or $ERRNO : Yields the current value of error no. variable if used in a numeric context.
If utilized in a string context, it yields the corresponding system error string.
perl
if (open my $fh, "<", $filename)
{
# Here $! is meaningless.
...
}
else
{
# ONLY here is $! meaningful.
...
# Already here $! might be meaningless.
}
# Since here we might have either success or failure,
# $! is meaningless.
Here, it is said that it's meaningless because here this variable(
$!) is unrelated to the outcome of
open()
operator.
Global Array Special Variables
@ARGV : In a command-line argument @ARGV is the array which is used for the intended script. It is generally one value less than the total number of arguments.
$ perl -e 'print join( ", ", @ARGV), "\n"' a b c
a, b, c
$ perl -e 'print join( ", ", @ARGV), "\n"' a "b c" d
a, b c, d
Here, a, b, c, d represents any numeric values.
@INC: This variable can be considered as the inbuilt help array which contains the list of places to find scripts to be evaluated by the do, require, or use constructs.
BEGIN { unshift @INC, "local/lib" };
use lib "local/lib";
@F : When we use the -a command-line switch we use @F to split and input the lines into an array. This array needs a full package name because it is package-specific.
Global Hash Special Variables
%INC : This variable contains the entries for the file name of each file that has been included. These entries are done via
do
,
require
or
use
operators.
%ENV : The hash containing your current environment.
perl
#!/usr/bin/perl
my $doo = 1;
$ENV{'car'} = \$doo;
if( ref $ENV{'car'} )
{
print "Ver 5.18.0";
}
else
{
print "Ver 5.18.0";
}
%SIG : To update the value of various signals this hash is used. It contains signal handlers for signals.
Global Special File handles
ARGV: ARGV is a special filehandle the file name is iterated over a command line when @ARGV is used. Generally, it is the null filehandle.
STDERR: It is the special file handle for standard error in any package.
STDIN: The special file handle for standard input in any package.
STDOUT: The special file handle for standard output in any package.
DATA: The special filehandle that refers to anything following the __END__ token in the file containing the script.
_ (underscore): The special filehandle used to cache the information from the last stat, lstat, or file test operator.
Global Special Constants
__END__: Used to show the end of a program.
__FILE__: Show the file name where it is referenced.
__LINE__: Shows the current line number
__PACKAGE__: This variable shows the package name.
Similar Reads
Basics
Perl Programming LanguagePerl is a general purpose, high level interpreted and dynamic programming language. Perl supports both the procedural and Object-Oriented programming. Perl is a lot similar to C syntactically and is easy for the users who have knowledge of C, C++. Since Perl is a lot similar to other widely used lan
3 min read
Introduction to PerlPerl is a general-purpose, high level interpreted and dynamic programming language. It was developed by Larry Wall, in 1987. There is no official Full form of the Perl, but still, the most used expansion is "Practical Extraction and Reporting Language". Some of the programmers also refer Perl as the
9 min read
Perl Installation and Environment Setup in Windows, Linux, and MacOSPrerequisite: Introduction to Perl Before, we start with the process of Installing Perl on our System, whether it be Windows, Linux or Macintosh. We must have first-hand knowledge of What the Perl Language is and what it actually does?. Perl is a general purpose, high level interpreted and dynamic p
3 min read
Perl | Basic Syntax of a Perl ProgramPerl is a general purpose, high level interpreted and dynamic programming language. Perl was originally developed for the text processing like extracting the required information from a specified text file and for converting the text file into a different form. Perl supports both the procedural and
10 min read
Hello World Program in PerlPerl programming language is exclusively designed for text processing purposes. Its abbreviation denotes Practical Extraction and Report Language. It is compatible on various platforms, such as Windows, Mac OS, and almost all versions of UNIX. Hello World! program in every programming language gives
3 min read
Fundamentals
Control Flow
Perl | Decision Making (if, if-else, Nestedâif, if-elsif ladder, unless, unless-else, unless-elsif)Decision Making in programming is similar to decision making in real life. In programming, a certain block of code needs to be executed when some condition is fulfilled. A programming language uses control statements to control the flow of execution of the program based on certain conditions. These
6 min read
Perl | Loops (for, foreach, while, do...while, until, Nested loops)Looping in programming languages is a feature which facilitates the execution of a set of instructions or functions repeatedly while some condition evaluates to true. Loops make the programmers task simpler. Perl provides the different types of loop to handle the condition based situation in the pro
7 min read
Perl | given-when Statementgiven-when statement in Perl is a substitute for long if-statements that compare a variable to several integral values. The given-when statement is a multiway branch statement. It provides an easy way to dispatch execution to different parts of code based on the value of the expression. given is a c
4 min read
Perl | goto statementThe goto statement in Perl is a jump statement which is sometimes also referred to as unconditional jump statement. The goto statement can be used to jump from anywhere to anywhere within a function. Syntax: LABEL: Statement 1; Statement 2; . . . . . Statement n; goto LABEL; In the above syntax, the
3 min read
Arrays & Lists
Perl | ArraysIn Perl, array is a special type of variable. The array is used to store the list of values and each object of the list is termed as an element. Elements can either be a number, string, or any type of scalar data including another variable. Example: @number = (50, 70, 46); @names = ("Geeks", "For",
6 min read
Perl | Array SlicesIn Perl, array is a special type of variable. The array is used to store the list of values and each object of the list is termed as an element. Elements can either be a number, string, or any type of scalar data including another variable. Arrays can store any type of data and that data can be acce
3 min read
Perl | Arrays (push, pop, shift, unshift)Perl provides various inbuilt functions to add and remove the elements in an array. .string-table { font-family: arial, sans-serif; border-collapse: collapse; border: 1px solid #5fb962; width: 100%; } .string-table td, th { background-color: #c6ebd9; border: 1px solid #5fb962; text-align: left; padd
3 min read
Perl List and its TypesIntroduction to Lists A list is a collection of scalar values. We can access the elements of a list using indexes. Index starts with 0 (0th index refers to the first element of the list). We use parenthesis and comma operators to construct a list. In Perl, scalar variables start with a $ symbol wher
4 min read
Hash
Scalars
Strings
Perl | Quoted, Interpolated and Escaped StringsA string in Perl is a scalar variable and start with a ($) sign and it can contain alphabets, numbers, special characters. The string can consist of a single word, a group of words or a multi-line paragraph. The String is defined by the user within a single quote (â) or double quote (â). Quoted Stri
4 min read
Perl | String OperatorsOperators are the foundation of any programming language. Thus, the functionality of Perl programming language is incomplete without the use of operators. A user can define operators as symbols that help to perform specific mathematical and logical computations on operands. String are scalar variabl
4 min read
Perl | String functions (length, lc, uc, index, rindex)String in Perl is a sequence of character enclosed within some kinds of quotation marks. Perl string can contain UNICODE, ASCII and escape sequence characters. Perl provides the various function to manipulate the string like any other programming language. Some string functions of Perl are as follow
4 min read
OOP Concepts
Object Oriented Programming (OOPs) in PerlObject-oriented programming: As the name suggests, Object-Oriented Programming or OOPs refers to languages that uses objects in programming. Object-oriented programming aims to implement real-world entities like inheritance, hiding, polymorphism, etc in programming. The main aim of OOP is to bind to
7 min read
Perl | Classes in OOPIn this modern world, where the use of programming has moved to its maximum and has its application in each and every work of our lives, we need to adapt ourselves to such programming paradigms that are directly linked to the real-world examples. There has been a drastic change in the competitivenes
6 min read
Perl | Objects in OOPsPerl is an Objected Oriented, dynamic and interpreter based programming language. In object-oriented programming, we have three main aspects, which are, object, class, and methods. An object is a data type which can be specifically called as an instance of the class to which it belongs. It can be a
6 min read
Perl | Methods in OOPsMethods are used to access and modify the data of an object. These are the entities which are invoked with the use of objects of a class or a package itself. Methods are basically a subroutine in Perl, there is no special identity of a method. Syntax of a method is the same as that of a subroutine.
5 min read
Perl | Constructors and DestructorsConstructors Constructors in Perl subroutines returns an object which is an instance of the class. In Perl, the convention is to name the constructor "new". Unlike many other OOPs, Perl does not provide any special syntax for constructing an object. It uses Data structures(hashes, arrays, scalars) t
4 min read
Perl | Method Overriding in OOPsIn any object-oriented programming language, Overriding is a feature that allows a subclass or child class to provide a specific implementation of a method that is already provided by one of its super-classes or parent classes. When a method in a subclass has the same name, same parameters or signat
6 min read
Perl | Inheritance in OOPsInheritance is a key concept in object-oriented programming that allows you to define a new class based on an existing class. The new class, called a subclass or derived class, inherits all of the properties and methods of the existing class, called the superclass or base class, and can also define
7 min read
Perl | Polymorphism in OOPsPolymorphism is the ability of any data to be processed in more than one form. The word itself indicates the meaning as poly means many and morphism means types. Polymorphism is one of the most important concepts of object-oriented programming languages. The most common use of polymorphism in object
4 min read
Perl | Encapsulation in OOPsEncapsulation in Perl is the process of wrapping up of data to protect it from the outside sources which need not have access to that part of the code. Encapsulation is a part of the Object-oriented programming, it is used to bind the data and the subroutines that are used to manipulate that data. I
6 min read
Regular Expressions
File Handling
Perl | File Handling IntroductionIn Perl, file handling is the process of creating, reading, writing, updating, and deleting files. Perl provides a variety of built-in functions and modules that make it easy to work with files. Here's an introduction to file handling in Perl: File modes:When opening a file in Perl, you need to spec
7 min read
Perl | Opening and Reading a FileA filehandle is an internal Perl structure that associates a physical file with a name. All filehandles have read/write access, so once filehandle is attached to a file reading/writing can be done. However, the mode in which file handle is opened is to be specified while associating a filehandle. Op
4 min read
Perl | Writing to a FileA filehandle is a variable that is used to read and write to a file. This filehandle gets associated with the file. In order to write to the file, it is opened in write mode as shown below: open (FH, â>â, âfilename.txtâ); If the file is existing then it truncates the old content of file with the
3 min read
Perl | Useful File-handling functionsPerl was originally developed for the text processing like extracting the required information from a specified text file and for converting the text file into a different form. These operations can be performed by the use of various inbuilt file functions. Example: Perl #!/usr/bin/perl # Opening a
2 min read