Perl Tutorials - Herong's Tutorial Examples - Version 5.32, by Dr. Herong Yang
Invoking Package Subroutines as Class Methods
This section provides a tutorial example on how to invoke a package subroutine as a class method. class->subroutine(...) is most commonly used syntax of calling class methods.
In Perl, any package can be used as a "class", and any subroutine in a package can be used as a class method or an object method.
If a subroutine is invoked as a class method, the class name (package name) will be automatically inserted into the argument list as the first argument. There are two ways to invoke a subroutine as a class method:
1. Using the "indirect object" syntax:
sub_identifier class_name arg2, arg3, ...
where "sub_identifier" is the subroutine identifier without any package name prefixes and "&"; "class_name" is the package name; and "arg2, arg3, ..." is the argument list starting from the second argument without parentheses.
2. Using the "->" notation:
class_name->sub_identifier(arg2, arg3, ...)
where "sub_identifier" is the subroutine identifier without any package name prefixes and "&"; "class_name" is the package name; and "arg2, arg3, ..." is the argument list starting from the second argument. In this format, parentheses on the argument list are optional.
I used both syntaxes in the following tutorial program, ClassMethodTest.pl:
#- ClassMethodTest.pl
#- Copyright (c) 1999 by Dr. Herong Yang, http://www.herongyang.com/
#
package Foo;
sub echoParam {
$i = 0;
while ( $p = shift) {
$i++;
print(" Param #",$i," = ",$p,"\n");
}
}
package main;
print("\nTest 1:\n");
&Foo::echoParam("Jan", "Feb");
print("\nTest 2:\n");
Foo::echoParam("Apple", "Banana");
print("\nTest 3:\n");
('Foo::echoParam')->("One", "Two");
print("\nTest 4:\n");
echoParam Foo "Cow", "Horse";
# print("\nTest 5:\n");
# &echoParam Foo "Cow", "Horse";
# print("\nTest 6:\n");
# echoParam Bar "Cow", "Horse";
print("\nTest 7:\n");
Foo->echoParam("Monday", "Tuesday");
# print("\nTest 8:\n");
# Bar->echoParam("Monday", "Tuesday");
exit;
Here is the output of the tutorial program:
Test 1: Param #1 = Jan Param #2 = Feb Test 2: Param #1 = Apple Param #2 = Banana Test 3: Param #1 = One Param #2 = Two Test 4: Param #1 = Foo Param #2 = Cow Param #3 = Horse Test 7: Param #1 = Foo Param #2 = Monday Param #3 = Tuesday
Note that:
Table of Contents
Data Types: Values and Variables
Expressions, Operations and Simple Statements
Name Spaces and Perl Module Files
Hard References - Addresses of Memory Objects
►Objects (or References) and Classes (or Packages)
Basic Concepts of Classes and Objects
►Invoking Package Subroutines as Class Methods
bless() - Converting References to Objects
Invoking Package Subroutines as Object Methods
Class Variables and Object Variables
new() Method - Creating Objects by the Class
CalendarClass.pm - A Perl Class Example
Typeglob and Importing Identifiers from Other Packages
String Built-in Functions and Performance
File Handles and Data Input/Output
Open Directories and Read File Names
File System Functions and Operations
Converting Perl Script to Executable Binary
Socket Communication Over the Internet
XML::Simple Module - XML Parser and Generator
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