Declaring and Calling Subroutines
This section describes some important rules about declaring and calling user defined subroutines: parameters are passed as a list value stored in the special local variable @_; subroutines are normally called with their name prefixed with &.
Like many other programming languages, Perl allows you
to define and call your own subroutines. But some
of Perl subroutine rules are unusual comparing to other languages.
1. All parameters of a subroutine call are passed as a single list
of scalars. If a list (array or hash) is used in a subroutine call
as a parameter, it will be exploded into multiple parameters with
2. All parameters will be received as elements in a local array variable
named as @_.
3. All parameters are passed as aliases. If the value of a parameter
is modified inside a subroutine, the value of the corresponding variable
in the calling code is also modified.
But if the calling code is passing a literal as a parameter,
then you can not modify the value of this parameter.
You will get an execution error.
4. All subroutines return values. So in Perl, subroutines are really
functions. If a subroutine is ended with no explicit return statement,
the value of the last expression will be returned.
5. All return values are passed back to the caller as a single list
of scalars. If a list (array or hash) is used as a return value,
it will be exploded into multiple return values with its elements.
6. There are several ways to call a subroutine:
- "&sub_name(list)" - Calling a subroutine with the specified list of
- "sub_name(list)" - Same as "&sub_name(list)".
- "sub_name list" - Same as "&sub_name(list)", if sub_name is pre-declared
as a subroutine.
- "sub_name" - Same as "&sub_name()", if sub_name is pre-declared
as a subroutine.
- "&sub_name" - Same as "&sub_name(@_)". This one is very unusual.
Table of Contents
About This Book
Perl on Linux Systems
ActivePerl on Windows Systems
Data Types: Values and Variables
Expressions, Operations and Simple Statements
►User Defined Subroutines
►Declaring and Calling Subroutines
SubParamList.pl - Example on Parameter List
SubParamAlias.pl - Example on Parameters as Alias
SubReturnValue.pl - Example on Return Values
SubCalling.pl - Example on Calling Formats
Perl Built-in Debugger
Name Spaces and Perl Module Files
Symbolic (or Soft) References
Hard References - Addresses of Memory Objects
Objects (or References) and Classes (or Packages)
Typeglob and Importing Identifiers from Other Packages
String Built-in Functions and Performance
File Handles and Data Input/Output
Open Files in Binary Mode
Open Directories and Read File Names
File System Functions and Operations
Converting Perl Script to Executable Binary
Using DBM Database Files
Using MySQL Database Server
Socket Communication Over the Internet
XML::Simple Module - XML Parser and Generator
XML Communication Model
SOAP::Lite - SOAP Server-Client Communication Module
Perl Programs as IIS Server CGI Scripts
CGI (Common Gateway Interface)
XML-RPC - Remote Procedure Call with XML and HTTP
RPC::XML - Perl Implementation of XML-RPC
Integrating Perl with Apache Web Server
CGI.pm Module for Building Web Pages
LWP::UserAgent and Web Site Testing
PDF Printing Version