IT SOLUTIONS
Your full service technology partner! 
-Collapse +Expand
To/From Code
-Collapse +Expand Members-Only
Sign in to see member-only pages.
   ► KBTo/From GuidesPerl  Print This     

Perl and PHP Cross Reference Guide

By Mike Prestwood

Perl versus PHP: A side by side comparison between Perl and PHP.

Perl

Version: This content is based on Perl 5 and tested using our web hosting server farm. The focus of this content is on server-side scripting.

This content focuses on topics in common among the languages documented here so nearly all this syntax applies to most Perl development environments as well as earlier versions of Perl.

Some of Perl's syntax will look similar to PHP but with significant differences.

PHP

Version: This content is based on PHP 5 and tested using our web hosting server farm. The focus of this content is on server-side scripting.

This content focuses on topics in common among the languages documented here so nearly all this syntax applies to most PHP development environments as well as earlier versions of PHP.

Some of PHP's syntax will look similar to Perl but with significant differences.

Note: To be clear, the subject of this information is generic PHP 5 and in some cases Delphi for PHP. Although much of the information applies to other PHP tools, we only verified the syntax and information within generic PHP and/or Delphi for PHP.

 
Tool Basics
 

Developer environment basics such as common file extensions, common keyboard shortcuts, etc.

Deployment Overview

[Other Languages] 
Perl: 

With Perl, you simply copy your files to a web server that is capable of running Perl pages.

More Info / Comment
PHP: 

With PHP, you simply copy your files to a web server that is capable of running PHP pages.

More Info / Comment




Development Tools

[Other Languages] 

Languages Focus

Primary development tool(s) used to develop and debug code.

Perl: 

Many developers just use a text editor but you have to be careful when developing on Windows and deploying to Unix/Linix. Some Windows text editors including Notepad, and Microsoft Expression Web save text files in UTF-8 which is not compatible with Unix/Linux.

There are many Perl editors available including ActivePerl Pro Studio, and the free Perl Express. I usually use Perl Express.

Quick Start: Install Perl to IIS or Apache, install Perl Express then configure to use Perl, then install MySQL. For IIS 7, you will likely have to configure Hangler Mappings and add %s %s.

More Info / Comment
PHP: 

Many developers just use a text editor. There are many PHP editors available including phpDesigner, and Delphi for PHP.

More Info / Comment




File Extensions

[Other Languages] 

Languages Focus

Common or primary file extensions used (not a complete list, just the basics).

Perl:   .pl, .plex, and .aspl

.pl is the traditonal default extension for Perl although some developers will change the default extension in an effort to add an additional security level and .cgi is still popular as a Perl associated extension as well as .plex and .aspl.

  • .pl - Perl
  • .cgi - Common Gateway Interface
  • .plex - Perl Executable
  • .aspl - Active Server Perl
More Info / Comment
PHP:   .php

.php is the default extension for PHP although some developers will change the default extension in an effort to add an additional security level. If your code is tied to a particular version of PHP then some developers at the major PHP version number to the extension as in .php3, .php4, .php5, etc. 

.phtml is also sometimes used especially for files that contain both HTML and Perl code.

More Info / Comment




Overview and History

[Other Languages] 
Perl: 

Language Overview: Perl is a stable, cross platform programming language.

Target Platforms: Perl is most suitable for creating websites targeting any browser (any web server with the Perl module installed).

History: PERL is an acronym for Practical Extraction and Report Language. It is used for mission critical projects in the public and private sectors. Perl is Open Source software, licensed under its Artistic License, or the GNU General Public License (GPL). Perl was created in 1987 by Larry Wall.

More Info / Comment
PHP: 

PHP is a hybrid language with both traditional PHP and OOP features. PHP is widely-used general-purpose scripting language that is especially suited for web development and can be embedded into HTML. PHP has been used to create some amazing web content, particularly outstanding message boards.

Target Platforms: PHP is most suitable for creating websites targeting any browser (any web server with PHP installed).

More Info / Comment




Report Tools Overview

[Other Languages] 

Languages Focus

Built-In: Some development tools have a reporting tool built-in and some do not. For example, typically desktop databases such as Paradox and Access have a built-in reporting tool and typically that reporting tool is used with nearly every application built with it. A built-in reporting tool makes development of reports across many clients and applications consistent and therefore easy.

Add-On: Development tools that do not have a built-in reporting tool need to use either a currently bundled report writer, or one of the popular reporting tools that integrates well with the development tool. For example, popular reporting tools include Crystal Reports, ReportBuilder, and MS SQL Reporting Services (tied to MS SQL).

Perl: 

No built-in report writer but because website development targets a client browser (a document interfaced GUI), a common solution is to simply output an HTML formatted page with black text and a white background (not much control but it does work for some situations).

More Info / Comment
PHP: 

No built-in report writer but because website development targets a client browser (a document interfaced GUI), a common solution is to simply output an HTML formatted page with black text and a white background (not much control but it does work for some situations).

More Info / Comment




 
Language Basics
 

Language basics is kind of a catch all for absolute beginner stuff. The items (common names) I chose for language basics is a bit random and include items like case sensitivity, commenting, declaring variables, etc.

Case Sensitivity

[Other Languages] 

Languages Focus

Case sensitiviy in this case is referring to commands and variable names. For example, are "printf" and "PrintF" equivalent? Are fullname and FullName equivalent? When you create commands, operations, methods, or variables should you worry about case?

Perl:   Yes

Perl is case sensitive.

Syntax Example:
print "hello"; //This works.
Print "hello"; //This does not.
PHP:   Yes and No

PHP is case sensitive with variable names but not with commands. Although commands are case incenstive, I prefer to use all lowercase because it's easy to type and that's what I see most PHP coders doing and I see it on PHP.Net.

Syntax Example:

All of the following are equivalent:

echo "hello<br>";
ECHO "hello<br>";
Echo "hello<br>";
eCHo "hello<br>";

...but variables are case sensitive:

$fullname = "Mike Prestwood"; //These are two...
$FullName = "Wes Peterson";   //separate varialbes.




Code Blocks

[Other Languages] 

Languages Focus

The rules for code blocks within a language dictate where you can declare variables, how you "bracket" code, etc.

Perl: 

In Perl, you create the entire HTML page within your .PL script file using print commands.

For Perl, PHP, JavaScript, Java,and C++, I prefer to put the first { at the end of the first line of the code block as in this example because I see morePeal codeformatted that way.

Syntax Example:
$x = "Yes";
 
If ($x == "Yes") {
print "Hello world";
  print "I am a Perl coder.";
}
PHP:   { }

In .PHP html pages, you embed PHP code between <?PHP and ?>.

For PHP, JavaScript, Java,and C++, I prefer to put the first { at the end of the first line of the code block as in the example above because I see morePHP codeformatted that way (and on PHP.Net).

PHP Alternative Syntax

Although I don't like to use it, PHP offers an alternative syntax for if, while, for, foreach, and switch. These code blocks are surrounded by statement ending keywords that all use End with camel caps such as endif, endwhile, endfor, endforeach,and endswitch.

Syntax Example:
<?PHP
$x = "Yes";
//Simple if
If ($x == "Yes")
echo "hello world";
 
//If with a block of code.
If ($x == "Yes") {
echo "Hello world";
  echo "I am a PHP coder!";
}
?>




Comments

[Other Languages] 

Languages Focus

Commenting code generally has three purposes: to document your code, for psuedo coding prior to coding, and to embed compiler directives. Most languages support both a single line comment and a multiple line comment. Some languages also use comments to give instructions to the compiler or interpreter.

Perl:   #

Commenting Code
Perl uses # for single line comments and Perl does NOT have a multiple line comment.

Compiler Directives (A special comment.)

Perl also uses compiler directives embedded in comments with #! as in:

#!/usr/local/bin/perl -w
Syntax Example:
#This is a comment in Perl.
PHP:   # or // or /* ... */

Commenting Code
Use the multi-line to comment out large blocks of code and to write multiple line comments.

Syntax Example:
#This is a comment in PHP.

//This is too!

/*
This is a multi-line
comment.
*/




Constants

[Other Languages] 

General Info: Computer Language Constants

A constant is just like a variable (it holds a value) but, unlike a variable, you cannot change the value of a constant.

Perl:   use constant

In Perl, you declare constants using the use constant keywords:

use constant CONST_NAME => "Value";

Constants in Perl are case sensitive. A common standard in Perl is to use all-uppercase letters, with underscores to separate words within the name.

Syntax Example:
use constant FULL_NAME => 'Mike Prestwood';
use constant AGE => 38;
  
print "Your name is " . FULL_NAME . ".<br>";
print "You are " . AGE . ".<br>";
PHP:   define

In PHP, you declare constants using the define keyword:

define("CONST_NAME", "Value");

Constants in PHP are case sensitive. A common standard in PHP is to use all-uppercase letters, with underscores to separate words within the name.

Syntax Example:
define('FULL_NAME', 'Mike Prestwood');
define("AGE", 25);
  
echo "Your name is " . FULL_NAME . ".";
echo "You are " . AGE . ".";




End of Statement

[Other Languages] 

Languages Focus

In coding languages, common End of statement specifiers include a semicolon and return (others exist too). Also of concern when studying a language is can you put two statements on a single code line and can you break a single statement into two or more code lines.

Perl:   ;
Syntax Example:
print "Hello";
PHP:   ;
Syntax Example:
echo "Hello";




Literals

[Other Languages] 

General Info: Programming Literals

A value directly written into the source code of a computer program (as opposed to an identifier like a variable or constant). Literals cannot be changed. Common types of literals include string literals, floating point literals, integer literals, and hexidemal literals. Literal strings are usually either quoted (") or use an apostrophe (') which is often referred to as a single quote. Sometimes quotes are inaccurately referred to as double quotes.

Languages Focus

In addition to understanding whether to use a quote or apostrophe for string literals, you also want to know how to specify and work with other types of literals including floating point literals. Some compilers allow leading and trailing decimals (.1 + .1), while some require a leading or trailing 0 as in (0.1 + 0.1). Also, because floating point literals are difficult for compilers to represent accurately, you need to understand how the compiler handles them and how to use rounding and trimming commands correctly for the nature of the project your are coding.

Perl:   quote

String literals are quoted as in "Prestwood". If you need to embed a quote use a slash in front of the quote as in \".

To specify a floating point literal between 1 and -1, you can preceed the decimal with a 0 or not (both work). In other words, preceding and following decimals are allowed (both .1 and 0.1). Trailing decimals are also allowed (1, 1., and 1.0 are all equivalent and allowed).

Syntax Example:
print "Hello";
print "Hello \"Mike\".";
  
#Does Perl evaluate this simple
#floating point math correctly? No! 
if ((.1 + .1 + .1) == .3) {
  print("Correct");
} else {
  print("Not correct");
}
PHP:   quote or apostrophe

In PHP you can use quotes, or apostrophes as in "Prestwood", and 'Prestwood' for string literals. Use a slash in front of a quote or apostrophe to embed same type as in \' and \".

To specify a floating point literal between 1 and -1, you can preceed the decimal with a 0 or not (both work). In other words, preceding and following decimals are allowed (both .1 and 0.1). Trailing decimals are also allowed (1, 1., and 1.0 are all equivalent and allowed).

Syntax Example:
echo "Mike's drums are over there.<br>";
echo 'Mike said, "hi!"<br>';
  
//Does PHP evaluate this simple
//floating point math correctly? No! 
If ((.1 + .1 + .1) == .3) {
 Echo "Correct";
} Else {
 Echo "Not correct";
}




Variables

[Other Languages] 

Languages Focus

A variable holds a value that you can use and change throughout your code so long as the variable is within scope. With variable declaration, you not only want to know the syntax of how you declare a variable but you also want to know where. Are you allowed to declare a variable inline? What are the available scopes: local vs. global. Can you assign a value at the same time you declare a variable?

Perl:   $x = 0;

Perl is a loosely typed language with only three types of variables: scalars, arrays, and hashes. Use $ for a scalar variable, @ for an array, or % for a hash (an associative array).

The scalar variable type is used for any type of simple data such as strings, integers, and numbers. In Perl, you identify and use a variable with a $ even within strings.

Syntax Example:
#!/usr/local/bin/perl -w
 
print("Content-type: text/html\n\n");

$fullname = 'Mike Prestwood';
$Age = 38;
$Weight = 162.4;
 

print "Your name is $fullname.
";
print "You are $Age and weigh $Weight.
";
PHP:   $x = 0;

PHP is a loosely typed language. No variable types in PHP. Declaring and using variables are a bit different than in other languages. In PHP, you identify and use a variable with a $ even within strings!

You assign by reference with & as in &$MyVar.

Syntax Example:
$fullname = 'Mike Prestwood';
$FullName = 'Wes Peterson'; //This is a different variable!
$Age = 38;
$Weight = 162.4;
 

echo "Your name is $fullname.
";
echo "You are $Age and weigh $Weight.
";




 
Language Details
 

Language Details is kind of a catch all for stuff that didn't make it into language basics nor any other category.

Custom Routines

[Other Languages] 

Languages Focus

For non-OOP languages, a custom routine is a function, procedure, or subroutine and for pure OOP languages, a custom routine is a class method. Hybrid languages (both non-OOP and OOP) combine both.

Perl:   sub

Perl uses subs and parameters are referenced in a special array. All arguments passed to a subroutine are stored in a special @_ array. To retrieve the arguments, you have to look inside the array and extract them.

Syntax Example:
sub sayHello {
 my ($pName) = $_[0];
 print("Hello $pName!");
}
sub add {
 my ($p1) = $_[0];
 my ($p2) = $_[1];
 return $p1 + $p2;
}
PHP:  "Custom Function" function

PHP uses functions and loosely typed parameters. Function definitions can come before or after their usage so my preference when mixing PHP in with a mostly HTML page is to put the functions after the </html> tag.

Syntax Example:
function sayHello($pName) {
 echo "Hello " . $pName . "<br>";
}
 
function add($p1, $p2) {
 return $p1 + $p2;
}




Overloading

[Other Languages] 

Types of overloading include method overloading and operator overloading.

Method Overloading is where different functions with the same name are invoked based on the data types of the parameters passed or the number of parameters. Method overloading is a type of polymorphism and is also known as Parametric Polymorphism.

Operater Overloading allows an operator to behave differently based on the types of values used. For example, in some languages the + operator is used both to add numbers and to concatenate strings. Custom operator overloading is sometimes referred to as ad-hoc polymorphism.

Perl: 

Perl

  • Operator - Yes
  • Method -
PHP: 

PHP

  • Operator - No.
  • Method -
Syntax Example:

 





 
Data Structures
 

Data structures allow you to store and work with data. Common data structures include arrays, associative arrays, etc.

Associative Array

[Other Languages] 
A set of unique keys linked to a set of values. Each unique key is associated with a value. Think of it as a two column table. MyArray['CA'] = 'California' MyArray['AR'] = 'Arizona'

Languages Focus

Associative arrays are also known as a dictionary or a hash table in other languages.

Perl:   % Array Preface
Syntax Example:
my %weekdays = (
'Sun' => 'Sunday',
'Mon' => 'Monday',
'Tue' => 'Tuesday',
'Wed' => 'Wednesday',
'Thu' => 'Thursday',
'Fri' => 'Friday',
'Sat' => 'Saturday',
);
my $day_of_the_week = $weekdays{'Mon'};
PHP: 

Declare associative array with initial known values. You can also add to associative array. (You can just assign values without ever declaring it too!)

Syntax Example:
$prices = array( 'Tires'=>100, 'Spark Plugs'=>4 );
$prices['Oil'] = 10;
 
echo "Tires=" . $prices['Tires'] . "<br>";
echo "Oil=" . $prices['Oil'] . "<br>";




Pointers

[Other Languages] 

General Info: Pointers / References

A pointer is a variable type that allows you to refer indirectly to another object. Instead of holding data, a pointer holds the address to data -- the address of another variable or object. You can change the address value a pointer points to thus changing the variable or object the pointer is pointing to.

A reference is a type of pointer that cannot change and it must always point to a valid storage (no nulls).

Perl: 

Perl supports both pointers and references.

PHP:   Not Supported

PHP supports references which allow you to refer to the value of a variable but PHP does not support true developer defined pointers. You cannot get and use the address of a variable.

However, you can still do inexpensive assignments by assigning by reference.





 
Statements
 

Common statements such as if statements, loops, etc.

If Statement

[Other Languages] 
Perl:   if..elsif..else

Notice Perl is different from most other languages in it's spelling of elsif (else is not spelled correctly).

Syntax Example:
$x = 8;
  
if ($x == 10) {
 print "X is 10.";
} elsif ($x < 10) {
 print "X is less than 10.";
} else {
 print "X must be greater than 10.";
}
PHP:   if..elseif..else

The PHP if statement consists of using if, elseif, and else.

Syntax Example:
$x = 8;
  
if ($x == 10) {
 echo "x is 10."; 
} elseif ($x < 10) {
 echo "x is less than 10.";
} else {
 echo "x must be greater than 10."; 
};




 
Operators
 

A language symbol used for assignment, comparison, computational, or as a logical.

Assignment

[Other Languages] 

Languages Focus

Common assignment operators for languages include =, ==, and :=. An assignment operator allows you to assign a value to a variable. The value can be a literal value like "Mike" or 42 or the value stored in another variable or returned by a function.

Perl:   =

Perl assignment operators:

= Assignment $x = 8;
+= Addition $x += 8;
-= Substraction $x -= 8;
*= Muliplication $x *= 8;
/= Division $x /= 8;
%= Modulus $x %= 8;
**= Exponent $x **= 8;

Syntax Example:
$FullName = "Randy Spitz";
$Age = 38;
PHP:   =

PHP uses = for it's assignment operator.

Syntax Example:
$fullname = "Randy Spitz";
$age = 38;




Comparison Operators

[Other Languages] 

General Info: Round Floating Point Numbers

When comparing floating point numbers, make sure you round to an acceptable level of rounding for the type of application you are using.

Languages Focus

A comparison operator compares two values either literals as in "Hello" and 3 or variables as in X and Counter. Most languages use the same operators for comparing both numbers and strings. Perl, for example, uses separate sets of comparison operators for numbers and strings.

Perl:   ==, !=

Common comparison operators:

== equal
!= not equal
< less than
> greater than
<= less than or equal
>= greater than or equal

Perl also offers additional string comparison operators:

eq string equals
ne string not equal
lt string less than
gt string greater than
le string less than or equal
ge string greater than or equal

Syntax Example:
#Does Perl evaluate the math correctly? No!
if ((.1 + .1 + .1) == .3) {
print("Correct<br>");
} else {
print("Not correct<br>");
}
PHP:   ==, != or <>

Common comparison operators:

== equal
!= or <> not equal
< less than
> greater than
<= less than or equal
>= greater than or equal

PHP 4 and above also offers === for indentical (equal plus same type) and !== for not identical (not equal or not same type).

Syntax Example:
//Does PHP evaluate the math correctly? No!
if (.1 + .1 + .1 == .3) {
echo "correct";
}
else {
echo "not correct";
}




Logical Operators

[Other Languages] 

Languages Focus

Logical operators perform conditional and, or, and not operations. Some languages support both binary logical operators that link two and unary logical operators negate (make opposite) the truth value of its argument. Finally, some languages short circuit logic. For example, with this or that, if this is an expression returning true, then that is never executed.

Perl: 

Perl logical operators:

&& or and and, as in this and that
|| or or or, as in this or that
! Not, as in Not This

Syntax Example:
#Given expressions a, b, c, and d:
if !((a && b) && (c || d)) {
  #Do something.
}
PHP:   and, &&, or, ||, !, Xor

PHP logical operators:

and, && and, as in this and that
or, || or, as in this or that
! Not, as in Not This
Xor either or, as in this or that but not both

Syntax Example:
#Given expressions a, b, c, and d:
if !((a && b) && (c || d)) {
  #Do something.
};




String Concatenation

[Other Languages] 
Perl:  "String Concatenation" .

Perl uses a period (.) known as a dot to concatenate strings.

Syntax Example:
$fname = "Mike";
$lname = "Prestwood";

$fullname = $fname . $lname . "
";

print "My name is " . "Mike.
";
PHP:  "String Concatenation" .

PHP uses a period (.) known as a dot to concatenate strings.

Syntax Example:
$fname = "Mike";
$lname = "Prestwood";

$fullname = $fname . $lname . "
";

echo "My name is " . "Mike.
";




Unary Operators

[Other Languages] 

General Info: Unary Operator

An operation with only one operand (a single input). Common unary operators include + plus, - minus, and bitwise not. Some operators can function as both unary and binary operators. For example, + and - operators can serve as either.

Languages Focus

What unary operators are supported in additoin to the standard plus, minus, and bitwise not.

Perl: 

An operation with only one operand (a single input). The following are the Perl unary operators: !, -, ~, +, \, &, and *.

  • ! performs logical negation which is "not"
  • - performs arithmetic negation if the operand is numeric.
  • ~ performs bitwise negation, that is 1's complement.
  • + has no semantic effect whatsoever, even on strings.
  • \ creates a reference to whatsoever follows.
  • & Address of operator.
  • * Dereference address operator.
PHP: 

A unary operator operates on only one value.

PHP Examples:

  • ! negation operator
  • ++ increment operator
  • -- decrement operator




Sales Website: www.prestwood.com Or visit our legacy sales site: 
legacy.prestwood.com


©1995-2024 Prestwood IT Solutions.   [Security & Privacy]