Home
Search Perl pages
Subjects
By activity
Professions, Sciences, Humanities, Business, ...
User Interface
Text-based, GUI, Audio, Video, Keyboards, Mouse, Images,...
Text Strings
Conversions, tests, processing, manipulation,...
Math
Integer, Floating point, Matrix, Statistics, Boolean, ...
Processing
Algorithms, Memory, Process control, Debugging, ...
Stored Data
Data storage, Integrity, Encryption, Compression, ...
Communications
Networks, protocols, Interprocess, Remote, Client Server, ...
Hard World Timing, Calendar and Clock, Audio, Video, Printer, Controls...
File System
Management, Filtering, File & Directory access, Viewers, ...
|
|
|
Actually, they don't. All
C operators that Perl copies have the same precedence in Perl as they do in
C. The problem is with operators that
C doesn't have, especially functions that give a list context to everything on their right, eg print, chmod, exec, and so on. Such functions are called ``list operators'' and appear as such in the precedence table in
the perlop manpage.
A common mistake is to write:
unlink $file || die "snafu";
This gets interpreted as:
unlink ($file || die "snafu");
To avoid this problem, either put in extra parentheses or use the super low
precedence or operator:
(unlink $file) || die "snafu";
unlink $file or die "snafu";
The ``English'' operators (and , or , xor , and not ) deliberately have precedence lower than that of list operators for just
such situations as the one above.
Another operator with surprising precedence is exponentiation. It binds
more tightly even than unary minus, making -2**2 product a negative not a positive four. It is also right-associating,
meaning that 2**3**2 is two raised to the ninth power, not eight squared.
Source: Perl FAQ: Perl Language Issues Copyright: Copyright (c) 1997 Tom Christiansen and Nathan Torkington. |
Next: How do I declare/create a structure?
Previous: What's an extension?
(Corrections, notes, and links courtesy of RocketAware.com)
Up to: PERL
Rapid-Links:
Search | About | Comments | Submit Path: RocketAware > Perl >
perlfaq7/Why_do_Perl_operators_have_diffe.htm
RocketAware.com is a service of Mib Software Copyright 2000, Forrest J. Cavalier III. All Rights Reserved. We welcome submissions and comments
|